From 82c4a77dad2b2c61b9bf82a6613e130573f4fa4f Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Wed, 18 Mar 2026 13:02:14 +0800 Subject: [PATCH 01/26] Enforce single-read-port constraint in mapping algorithm --- lib/NeuraDialect/Mapping/mapping_util.cpp | 41 +++++++++++++++++++---- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/lib/NeuraDialect/Mapping/mapping_util.cpp b/lib/NeuraDialect/Mapping/mapping_util.cpp index c007a9c3..22fd42c3 100644 --- a/lib/NeuraDialect/Mapping/mapping_util.cpp +++ b/lib/NeuraDialect/Mapping/mapping_util.cpp @@ -551,14 +551,43 @@ bool mlir::neura::tryRouteBackwardMove(Operation *mov_op, MappingLoc src_loc, Register *mlir::neura::getAvailableRegister(const MappingState &state, Tile *tile, int start_time, int exclusive_end_time) { + // Collect registers occupied by computations (non-MOV operations) on this + // tile within the time range. These represent FU-bound reads that share + // the register file's single read port with any routing bypass. + std::set computation_regs; for (Register *reg : tile->getRegisters()) { - // FIXME: We may need constrain the register availability to the conflicting - // input channel (either the input channel or a register file on the same - // input direction could be active at one time). - if (state.isAvailableAcrossTimeInRange(reg, start_time, - exclusive_end_time)) { - return reg; + for (int t = start_time; t < exclusive_end_time; ++t) { + auto op = state.getOpAt({reg, t}); + if (!op.has_value()) continue; + Operation *mapped_op = op.value(); + if (isa(mapped_op) || isa(mapped_op)) + continue; + computation_regs.insert(reg); + } + } + + for (Register *reg : tile->getRegisters()) { + if (!state.isAvailableAcrossTimeInRange(reg, start_time, + exclusive_end_time)) + continue; + + // Single-read-port constraint: if a computation already reads from the + // same register file (cluster), the bypass must use the identical register. + // If from a different register file, no constraint applies. + RegisterFile *candidate_file = reg->getRegisterFile(); + bool conflict = false; + for (Register *comp_reg : computation_regs) { + if (comp_reg->getRegisterFile() != candidate_file) + continue; + // Same register file — only the exact same register is allowed. + if (comp_reg != reg) { + conflict = true; + break; + } } + if (conflict) continue; + + return reg; } return nullptr; } From 4afbfddee719379cb67dc8a7fe2c952ae057e5bf Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Thu, 19 Mar 2026 13:53:55 +0800 Subject: [PATCH 02/26] Enforce register-file intra-index constraint for mov vs compute --- lib/NeuraDialect/Mapping/MappingState.cpp | 163 +++++++++++++++++++++- lib/NeuraDialect/Mapping/mapping_util.cpp | 41 +----- 2 files changed, 162 insertions(+), 42 deletions(-) diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index d537eeea..8fc794c7 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -116,13 +116,13 @@ void MappingState::unbindOp(Operation *op) { } bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { - // For spatial mapping, checks if the location is available across all time. + // For spatial mapping, checks if the location stays available at all time steps. if (this->is_spatial_only) { for (int t = 0; t < II * kMaxSteps; ++t) { MappingLoc check_loc = {loc.resource, t}; auto it = occupied_locs.find(check_loc); if (it != occupied_locs.end()) { - // Check if all existing occupy statuses allow new single-cycle op + // Rejects the location if any non-shareable occupancy is present. for (const auto &entry : it->second) { if (entry.first != IN_PIPE_OCCUPY) { return false; @@ -130,14 +130,91 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { } } } + + // Enforces identical intra-index when a mov read and a compute read share a register file. + if (loc.resource->getKind() == ResourceKind::Register) { + Register *reg = static_cast(loc.resource); + RegisterFile *reg_file = reg->getRegisterFile(); + if (reg_file) { + auto isMovOp = [](Operation *op) { + // Identifies bypass routing ops by name to avoid relying on generated op classes. + if (!op) { + return false; + } + auto name = op->getName().getStringRef(); + return name == "neura.data_mov" || name == "neura.ctrl_mov"; + }; + + auto violatesClusterReadConstraintAt = [&](int t) -> bool { + // Tracks whether sibling registers in the file are used by mov or compute in this slot. + bool otherRegHasMov = false; + bool otherRegHasCompute = false; + + for (const auto &[_, sibling] : reg_file->getRegisters()) { + if (sibling == reg) { + continue; + } + auto itOcc = occupied_locs.find({sibling, t}); + if (itOcc == occupied_locs.end()) { + continue; + } + + for (const auto &entry : itOcc->second) { + Operation *occOp = entry.second; + if (isMovOp(occOp)) { + otherRegHasMov = true; + } else { + otherRegHasCompute = true; + } + + // Rejects the slot once mov and compute are found on different sibling registers. + if (otherRegHasMov && otherRegHasCompute) { + return true; + } + } + } + + auto itThis = occupied_locs.find({reg, t}); + bool thisRegHasMov = false; + bool thisRegHasCompute = false; + if (itThis != occupied_locs.end()) { + for (const auto &entry : itThis->second) { + Operation *occOp = entry.second; + if (isMovOp(occOp)) { + thisRegHasMov = true; + } else { + thisRegHasCompute = true; + } + } + } + + // Rejects the slot when this register mixes with a sibling of the opposite kind. + if (otherRegHasCompute && thisRegHasMov) { + return true; + } + if (otherRegHasMov && thisRegHasCompute) { + return true; + } + + return false; + }; + + for (int t = 0; t < II * kMaxSteps; ++t) { + if (violatesClusterReadConstraintAt(t)) { + return false; + } + } + } + } + return true; } else { - // Checks the availability across time domain. + // Checks the availability across the modulo-II time domain. for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { MappingLoc check_loc = {loc.resource, t}; auto it = occupied_locs.find(check_loc); if (it != occupied_locs.end()) { - // Check if all existing occupy statuses allow new single-cycle op + // Rejects the location if any non-shareable occupancy is present. for (const auto &entry : it->second) { if (entry.first != IN_PIPE_OCCUPY) { return false; @@ -145,6 +222,80 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { } } } + + // Enforces identical intra-index when a mov read and a compute read share a register file. + if (loc.resource->getKind() == ResourceKind::Register) { + Register *reg = static_cast(loc.resource); + RegisterFile *reg_file = reg->getRegisterFile(); + if (reg_file) { + auto isMovOp = [](Operation *op) { + // Identifies bypass routing ops by name to avoid relying on generated op classes. + if (!op) { + return false; + } + auto name = op->getName().getStringRef(); + return name == "neura.data_mov" || name == "neura.ctrl_mov"; + }; + + auto violatesClusterReadConstraintAt = [&](int t) -> bool { + // Tracks whether sibling registers in the file are used by mov or compute in this slot. + bool otherRegHasMov = false; + bool otherRegHasCompute = false; + + for (const auto &[_, sibling] : reg_file->getRegisters()) { + if (sibling == reg) { + continue; + } + auto itOcc = occupied_locs.find({sibling, t}); + if (itOcc == occupied_locs.end()) { + continue; + } + + for (const auto &entry : itOcc->second) { + Operation *occOp = entry.second; + if (isMovOp(occOp)) { + otherRegHasMov = true; + } else { + otherRegHasCompute = true; + } + if (otherRegHasMov && otherRegHasCompute) { + return true; + } + } + } + + auto itThis = occupied_locs.find({reg, t}); + bool thisRegHasMov = false; + bool thisRegHasCompute = false; + if (itThis != occupied_locs.end()) { + for (const auto &entry : itThis->second) { + Operation *occOp = entry.second; + if (isMovOp(occOp)) { + thisRegHasMov = true; + } else { + thisRegHasCompute = true; + } + } + } + + // Rejects the slot when this register mixes with a sibling of the opposite kind. + if (otherRegHasCompute && thisRegHasMov) { + return true; + } + if (otherRegHasMov && thisRegHasCompute) { + return true; + } + return false; + }; + + for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { + if (violatesClusterReadConstraintAt(t)) { + return false; + } + } + } + } + return true; } } @@ -159,11 +310,11 @@ bool MappingState::isAvailableForOccupyStatus(const MappingLoc &loc, return true; } - // Check against all existing entries at this location + // Checks against all existing entries at this location for (const auto &entry : it->second) { int existing_status = entry.first; - // Implement the pipeline-aware availability rules: + // Implements the pipeline-aware availability rules: // - SINGLE_OCCUPY (0): exclusive, no other op can share // - START_PIPE_OCCUPY (1): cannot coexist with SINGLE or another START // - END_PIPE_OCCUPY (2): cannot coexist with SINGLE or another END diff --git a/lib/NeuraDialect/Mapping/mapping_util.cpp b/lib/NeuraDialect/Mapping/mapping_util.cpp index 22fd42c3..4b68dba7 100644 --- a/lib/NeuraDialect/Mapping/mapping_util.cpp +++ b/lib/NeuraDialect/Mapping/mapping_util.cpp @@ -551,43 +551,12 @@ bool mlir::neura::tryRouteBackwardMove(Operation *mov_op, MappingLoc src_loc, Register *mlir::neura::getAvailableRegister(const MappingState &state, Tile *tile, int start_time, int exclusive_end_time) { - // Collect registers occupied by computations (non-MOV operations) on this - // tile within the time range. These represent FU-bound reads that share - // the register file's single read port with any routing bypass. - std::set computation_regs; + // The single-read-port constraint (only one register per RegisterFile may be + // used at a time) is now enforced inside isAvailableAcrossTime(), so we only + // need to find the first register that is free across the requested range. for (Register *reg : tile->getRegisters()) { - for (int t = start_time; t < exclusive_end_time; ++t) { - auto op = state.getOpAt({reg, t}); - if (!op.has_value()) continue; - Operation *mapped_op = op.value(); - if (isa(mapped_op) || isa(mapped_op)) - continue; - computation_regs.insert(reg); - } - } - - for (Register *reg : tile->getRegisters()) { - if (!state.isAvailableAcrossTimeInRange(reg, start_time, - exclusive_end_time)) - continue; - - // Single-read-port constraint: if a computation already reads from the - // same register file (cluster), the bypass must use the identical register. - // If from a different register file, no constraint applies. - RegisterFile *candidate_file = reg->getRegisterFile(); - bool conflict = false; - for (Register *comp_reg : computation_regs) { - if (comp_reg->getRegisterFile() != candidate_file) - continue; - // Same register file — only the exact same register is allowed. - if (comp_reg != reg) { - conflict = true; - break; - } - } - if (conflict) continue; - - return reg; + if (state.isAvailableAcrossTimeInRange(reg, start_time, exclusive_end_time)) + return reg; } return nullptr; } From dda69d8da161e315b6d332984c2c7a9984996b64 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Fri, 20 Mar 2026 01:15:57 +0800 Subject: [PATCH 03/26] feat: Implement register file occupancy tracking in MappingState, add CGRA placement utilities. --- include/NeuraDialect/Mapping/MappingState.h | 51 +++ lib/NeuraDialect/Mapping/MappingState.cpp | 339 ++++++++++---------- 2 files changed, 215 insertions(+), 175 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index 99dc737f..5e6022b5 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -5,6 +5,7 @@ #include "mlir/IR/Operation.h" #include "llvm/Support/raw_ostream.h" #include +#include #include namespace mlir { @@ -57,6 +58,17 @@ template <> struct hash { namespace mlir { namespace neura { +// Tracks per-time-slot occupancy of a register cluster (RegisterFile). +// Used to enforce the constraint: if a bypass (MOV) and a computation read from +// the same cluster at the same time step, they must use the identical register. +struct RegClusterOccupyStatus { + int mov_count = 0; // number of MOV ops reading from this cluster + int compute_count = 0; // number of compute ops reading from this cluster + + // Returns true if the cluster slot is occupied by any op (mov or compute). + bool alreadyOccupied() const { return mov_count > 0 || compute_count > 0; } +}; + // Tracks placement and routing of ops on the CGRA. class MappingState { public: @@ -152,6 +164,11 @@ class MappingState { const std::map> &getOpToLocs() const { return this->op_to_locs; } + const std::unordered_map> & + getRegFileOccupyRecords() const { + return this->reg_file_occupy_records; + } // Setters for state information. void setOccupiedLocs( @@ -166,6 +183,12 @@ class MappingState { const std::map> &op_to_locs) { this->op_to_locs = op_to_locs; } + void setRegFileOccupyRecords( + const std::unordered_map> + &records) { + this->reg_file_occupy_records = records; + } private: // Initiation interval. @@ -178,6 +201,31 @@ class MappingState { std::map>> occupied_locs; std::map loc_to_op; std::map> op_to_locs; + + // Record table for register cluster occupancy, keyed by (RegisterFile*, + // time_step % II). Updated incrementally on every bind/reserve/unbind/release + // so that isAvailableAcrossTime() can answer cluster-conflict queries in O(1) + // instead of scanning all sibling registers across all time steps. + std::unordered_map> + reg_file_occupy_records; + + // Returns true if op is a routing bypass (data_mov or ctrl_mov). + static bool isMovOp(Operation *op); + + // Increments the appropriate counter in reg_file_occupy_records for a + // register location when op is bound/reserved there. + void addToRegFileRecord(Register *reg, int time_step, Operation *op); + + // Decrements the appropriate counter in reg_file_occupy_records for a + // register location when op is unbound/released from there. + void removeFromRegFileRecord(Register *reg, int time_step, Operation *op); + + // Returns true if placing op (mov or compute) onto reg at the given + // canonical time slot would violate the cluster read constraint. + bool violatesClusterReadConstraint(RegisterFile *reg_file, Register *reg, + int canonical_time_step, + bool is_mov) const; }; } // namespace neura @@ -199,6 +247,9 @@ class MappingStateSnapshot { std::map>> occupied_locs; std::map loc_to_op; std::map> op_to_locs; + std::unordered_map> + reg_file_occupy_records; }; } // namespace neura } // namespace mlir diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index 8fc794c7..e571bfb4 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -3,6 +3,7 @@ #include "mlir/IR/BuiltinAttributes.h" #include "mlir/IR/BuiltinTypes.h" #include "llvm/Support/raw_ostream.h" +#include "NeuraDialect/NeuraOps.h" #include using namespace mlir; @@ -30,6 +31,70 @@ MappingState::MappingState(const Architecture &arch, int II, bool is_spatial_only) : II(II), is_spatial_only(is_spatial_only) {} +// --------------------------------------------------------------------------- +// Static helpers +// --------------------------------------------------------------------------- + +bool MappingState::isMovOp(Operation *op) { + if (!op) { + return false; + } + return isa(op) || isa(op); +} + +void MappingState::addToRegFileRecord(Register *reg, int time_step, + Operation *op) { + RegisterFile *reg_file = reg->getRegisterFile(); + if (!reg_file) { + return; + } + int canonical_step = time_step % II; + RegClusterOccupyStatus &status = + reg_file_occupy_records[reg_file][canonical_step]; + if (isMovOp(op)) { + ++status.mov_count; + } else { + ++status.compute_count; + } +} + +void MappingState::removeFromRegFileRecord(Register *reg, int time_step, + Operation *op) { + RegisterFile *reg_file = reg->getRegisterFile(); + if (!reg_file) { + return; + } + int canonical_step = time_step % II; + std::unordered_map>::iterator + reg_file_it = reg_file_occupy_records.find(reg_file); + if (reg_file_it == reg_file_occupy_records.end()) { + return; + } + std::unordered_map::iterator slot_it = + reg_file_it->second.find(canonical_step); + if (slot_it == reg_file_it->second.end()) { + return; + } + RegClusterOccupyStatus &status = slot_it->second; + if (isMovOp(op)) { + --status.mov_count; + } else { + --status.compute_count; + } + // Cleans up empty entries to keep the map compact. + if (status.mov_count == 0 && status.compute_count == 0) { + reg_file_it->second.erase(slot_it); + if (reg_file_it->second.empty()) { + reg_file_occupy_records.erase(reg_file_it); + } + } +} + +// --------------------------------------------------------------------------- +// MappingState public API — bind / unbind +// --------------------------------------------------------------------------- + bool MappingState::bindOp(const MappingLoc &loc, Operation *op) { // Default to SINGLE_OCCUPY for backward compatibility return bindOp(loc, op, SINGLE_OCCUPY); @@ -44,9 +109,15 @@ bool MappingState::bindOp(const MappingLoc &loc, Operation *op, loc_to_op[loc] = op; occupied_locs[loc].push_back({occupy_status, op}); - auto it = op_to_locs.find(op); + std::map>::iterator it = + op_to_locs.find(op); assert(it == op_to_locs.end() && "Operation already has reserved locations"); op_to_locs[op].push_back(loc); + // Maintains register cluster occupancy record. + if (loc.resource->getKind() == ResourceKind::Register) { + Register *reg = static_cast(loc.resource); + addToRegFileRecord(reg, loc.time_step, op); + } return true; } @@ -88,214 +159,119 @@ bool MappingState::bindMultiCycleOp(BasicResource *resource, int start_time, } void MappingState::unbindOp(Operation *op) { - auto it = op_to_locs.find(op); + std::map>::iterator it = + op_to_locs.find(op); if (it == op_to_locs.end()) { return; } for (const MappingLoc &loc : it->second) { loc_to_op.erase(loc); - // Remove entries for this op from occupied_locs - auto occ_it = occupied_locs.find(loc); + // Removes entries for this op from occupied_locs + std::map>>::iterator + occ_it = occupied_locs.find(loc); if (occ_it != occupied_locs.end()) { - auto &entries = occ_it->second; + std::vector> &entries = occ_it->second; entries.erase( std::remove_if(entries.begin(), entries.end(), [op](const std::pair &entry) { return entry.second == op; }), entries.end()); - // Remove the location entirely if no more entries + // Removes the location entirely if no more entries. if (entries.empty()) { occupied_locs.erase(occ_it); } } + // Maintains register cluster occupancy record. + if (loc.resource->getKind() == ResourceKind::Register) { + Register *reg = static_cast(loc.resource); + removeFromRegFileRecord(reg, loc.time_step, op); + } } op_to_locs.erase(it); } bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { - // For spatial mapping, checks if the location stays available at all time steps. + // Checks whether the resource at the given (resource, time_step) is free, + // considering both occupancy state and the register-cluster read constraint. + + // Returns true if the (resource, t) slot is free (or only IN_PIPE_OCCUPY). + auto isSlotFree = [this](BasicResource *resource, int t) -> bool { + std::map>>::const_iterator it = + occupied_locs.find({resource, t}); + if (it == occupied_locs.end()) { + return true; + } + for (const std::pair &entry : it->second) { + if (entry.first != IN_PIPE_OCCUPY) { + return false; + } + } + return true; + }; + + // Returns true if the cluster slot already holds both mov and compute + // occupants on sibling registers — an O(1) lookup via the record table. + auto clusterSlotHasMixedKinds = [this](RegisterFile *reg_file, + int canonical_step) -> bool { + std::unordered_map>:: + const_iterator reg_file_it = reg_file_occupy_records.find(reg_file); + if (reg_file_it == reg_file_occupy_records.end()) { + return false; + } + std::unordered_map::const_iterator slot_it = + reg_file_it->second.find(canonical_step); + if (slot_it == reg_file_it->second.end()) { + return false; + } + const RegClusterOccupyStatus &status = slot_it->second; + return status.mov_count > 0 && status.compute_count > 0; + }; + if (this->is_spatial_only) { + // Spatial-only: resource must be free at every time step. for (int t = 0; t < II * kMaxSteps; ++t) { - MappingLoc check_loc = {loc.resource, t}; - auto it = occupied_locs.find(check_loc); - if (it != occupied_locs.end()) { - // Rejects the location if any non-shareable occupancy is present. - for (const auto &entry : it->second) { - if (entry.first != IN_PIPE_OCCUPY) { - return false; - } - } + if (!isSlotFree(loc.resource, t)) { + return false; } } - - // Enforces identical intra-index when a mov read and a compute read share a register file. + // Register-cluster constraint: any cluster record at these steps belongs + // to sibling registers (reg itself is free). Reject if any canonical slot + // already mixes mov and compute kinds. if (loc.resource->getKind() == ResourceKind::Register) { Register *reg = static_cast(loc.resource); RegisterFile *reg_file = reg->getRegisterFile(); if (reg_file) { - auto isMovOp = [](Operation *op) { - // Identifies bypass routing ops by name to avoid relying on generated op classes. - if (!op) { - return false; - } - auto name = op->getName().getStringRef(); - return name == "neura.data_mov" || name == "neura.ctrl_mov"; - }; - - auto violatesClusterReadConstraintAt = [&](int t) -> bool { - // Tracks whether sibling registers in the file are used by mov or compute in this slot. - bool otherRegHasMov = false; - bool otherRegHasCompute = false; - - for (const auto &[_, sibling] : reg_file->getRegisters()) { - if (sibling == reg) { - continue; - } - auto itOcc = occupied_locs.find({sibling, t}); - if (itOcc == occupied_locs.end()) { - continue; - } - - for (const auto &entry : itOcc->second) { - Operation *occOp = entry.second; - if (isMovOp(occOp)) { - otherRegHasMov = true; - } else { - otherRegHasCompute = true; - } - - // Rejects the slot once mov and compute are found on different sibling registers. - if (otherRegHasMov && otherRegHasCompute) { - return true; - } - } - } - - auto itThis = occupied_locs.find({reg, t}); - bool thisRegHasMov = false; - bool thisRegHasCompute = false; - if (itThis != occupied_locs.end()) { - for (const auto &entry : itThis->second) { - Operation *occOp = entry.second; - if (isMovOp(occOp)) { - thisRegHasMov = true; - } else { - thisRegHasCompute = true; - } - } - } - - // Rejects the slot when this register mixes with a sibling of the opposite kind. - if (otherRegHasCompute && thisRegHasMov) { - return true; - } - if (otherRegHasMov && thisRegHasCompute) { - return true; - } - - return false; - }; - - for (int t = 0; t < II * kMaxSteps; ++t) { - if (violatesClusterReadConstraintAt(t)) { + for (int canonical_step = 0; canonical_step < II; ++canonical_step) { + if (clusterSlotHasMixedKinds(reg_file, canonical_step)) { return false; } } } } - return true; } else { - // Checks the availability across the modulo-II time domain. + // Temporal (modulo-II): resource must be free at all congruent steps. for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { - MappingLoc check_loc = {loc.resource, t}; - auto it = occupied_locs.find(check_loc); - if (it != occupied_locs.end()) { - // Rejects the location if any non-shareable occupancy is present. - for (const auto &entry : it->second) { - if (entry.first != IN_PIPE_OCCUPY) { - return false; - } - } + if (!isSlotFree(loc.resource, t)) { + return false; } } - - // Enforces identical intra-index when a mov read and a compute read share a register file. + // Register-cluster constraint: only the one canonical slot matters. if (loc.resource->getKind() == ResourceKind::Register) { Register *reg = static_cast(loc.resource); RegisterFile *reg_file = reg->getRegisterFile(); if (reg_file) { - auto isMovOp = [](Operation *op) { - // Identifies bypass routing ops by name to avoid relying on generated op classes. - if (!op) { - return false; - } - auto name = op->getName().getStringRef(); - return name == "neura.data_mov" || name == "neura.ctrl_mov"; - }; - - auto violatesClusterReadConstraintAt = [&](int t) -> bool { - // Tracks whether sibling registers in the file are used by mov or compute in this slot. - bool otherRegHasMov = false; - bool otherRegHasCompute = false; - - for (const auto &[_, sibling] : reg_file->getRegisters()) { - if (sibling == reg) { - continue; - } - auto itOcc = occupied_locs.find({sibling, t}); - if (itOcc == occupied_locs.end()) { - continue; - } - - for (const auto &entry : itOcc->second) { - Operation *occOp = entry.second; - if (isMovOp(occOp)) { - otherRegHasMov = true; - } else { - otherRegHasCompute = true; - } - if (otherRegHasMov && otherRegHasCompute) { - return true; - } - } - } - - auto itThis = occupied_locs.find({reg, t}); - bool thisRegHasMov = false; - bool thisRegHasCompute = false; - if (itThis != occupied_locs.end()) { - for (const auto &entry : itThis->second) { - Operation *occOp = entry.second; - if (isMovOp(occOp)) { - thisRegHasMov = true; - } else { - thisRegHasCompute = true; - } - } - } - - // Rejects the slot when this register mixes with a sibling of the opposite kind. - if (otherRegHasCompute && thisRegHasMov) { - return true; - } - if (otherRegHasMov && thisRegHasCompute) { - return true; - } + int canonical_step = loc.time_step % II; + if (clusterSlotHasMixedKinds(reg_file, canonical_step)) { return false; - }; - - for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { - if (violatesClusterReadConstraintAt(t)) { - return false; - } } } } - return true; } } @@ -377,18 +353,18 @@ int MappingState::getOccupyStatusAcrossTime(const MappingLoc &loc) const { MappingLoc check_loc = {loc.resource, t}; auto it = occupied_locs.find(check_loc); if (it != occupied_locs.end() && !it->second.empty()) { - // Return the first status found (most restrictive) + // Returns the first status found (most restrictive). return it->second[0].first; } } return -1; } else { - // Check across time domain (modulo II) + // Checks across time domain (modulo II). for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { MappingLoc check_loc = {loc.resource, t}; auto it = occupied_locs.find(check_loc); if (it != occupied_locs.end() && !it->second.empty()) { - // Return the first status found (most restrictive) + // Returns the first status found (most restrictive). return it->second[0].first; } } @@ -508,14 +484,11 @@ MappingState::getCurrentStepLinks(MappingLoc loc) const { } void MappingState::reserveRoute(Operation *op, ArrayRef path) { - - // Records all mapping locations. - - llvm::errs() << "Reserving route for operation: " << *op << "\n"; llvm::errs() << "Path: "; for (const MappingLoc &loc : path) { - llvm::errs() << loc.resource->getType() << "#" << loc.resource->getId() << " @t=" << loc.time_step << " "; + llvm::errs() << loc.resource->getType() << "#" << loc.resource->getId() + << " @t=" << loc.time_step << " "; } llvm::errs() << "\n"; assert(op_to_locs.find(op) == op_to_locs.end() && @@ -524,13 +497,19 @@ void MappingState::reserveRoute(Operation *op, ArrayRef path) { for (const MappingLoc &loc : path) { loc_to_op[loc] = op; - // Use SINGLE_OCCUPY for route reservations (links/registers) + // Use SINGLE_OCCUPY for route reservations (links/registers). occupied_locs[loc].push_back({SINGLE_OCCUPY, op}); + // Maintain register cluster occupancy record. + if (loc.resource->getKind() == ResourceKind::Register) { + Register *reg = static_cast(loc.resource); + addToRegFileRecord(reg, loc.time_step, op); + } } } void MappingState::releaseRoute(Operation *op) { - auto it = op_to_locs.find(op); + std::map>::iterator it = + op_to_locs.find(op); if (it == op_to_locs.end()) { return; } @@ -540,20 +519,26 @@ void MappingState::releaseRoute(Operation *op) { for (const MappingLoc &loc : route) { loc_to_op.erase(loc); // Remove entries for this op from occupied_locs - auto occ_it = occupied_locs.find(loc); + std::map>>::iterator + occ_it = occupied_locs.find(loc); if (occ_it != occupied_locs.end()) { - auto &entries = occ_it->second; + std::vector> &entries = occ_it->second; entries.erase( std::remove_if(entries.begin(), entries.end(), [op](const std::pair &entry) { return entry.second == op; }), entries.end()); - // Remove the location entirely if no more entries + // Removes the location entirely if no more entries. if (entries.empty()) { occupied_locs.erase(occ_it); } } + // Maintains register cluster occupancy record. + if (loc.resource->getKind() == ResourceKind::Register) { + Register *reg = static_cast(loc.resource); + removeFromRegFileRecord(reg, loc.time_step, op); + } } op_to_locs.erase(it); @@ -602,8 +587,9 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { (II < kTwoDigitThreshold ? kHeaderPrefixLenSingleDigit : kHeaderPrefixLenDoubleDigit) - (slot < kTwoDigitThreshold ? kSingleDigitLen : kDoubleDigitLen); - for (int i = 0; i < padding; ++i) + for (int i = 0; i < padding; ++i) { os << " "; + } os << " | "; } os << "\n"; @@ -611,8 +597,9 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { // Prints separator line. os << "---------+"; for (size_t i = 0; i < time_slots.size(); ++i) { - for (int j = 0; j < kKeyMaxLen + 1; ++j) + for (int j = 0; j < kKeyMaxLen + 1; ++j) { os << "-"; + } os << "+"; } os << "\n"; @@ -830,10 +817,12 @@ MappingStateSnapshot::MappingStateSnapshot(const MappingState &mapping_state) { this->occupied_locs = mapping_state.getOccupiedLocs(); this->loc_to_op = mapping_state.getLocToOp(); this->op_to_locs = mapping_state.getOpToLocs(); + this->reg_file_occupy_records = mapping_state.getRegFileOccupyRecords(); } void MappingStateSnapshot::restore(MappingState &mapping_state) { mapping_state.setOccupiedLocs(this->occupied_locs); mapping_state.setLocToOp(this->loc_to_op); mapping_state.setOpToLocs(this->op_to_locs); + mapping_state.setRegFileOccupyRecords(this->reg_file_occupy_records); } From d26c4cc50ab4145ed1b84b463f593887b60adf1a Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Fri, 20 Mar 2026 01:30:20 +0800 Subject: [PATCH 04/26] Replaced autos with explicit data types --- include/NeuraDialect/Mapping/MappingState.h | 4 +- lib/NeuraDialect/Mapping/MappingState.cpp | 75 +++++++++++++-------- 2 files changed, 48 insertions(+), 31 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index 5e6022b5..d4e0e3df 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -62,8 +62,8 @@ namespace neura { // Used to enforce the constraint: if a bypass (MOV) and a computation read from // the same cluster at the same time step, they must use the identical register. struct RegClusterOccupyStatus { - int mov_count = 0; // number of MOV ops reading from this cluster - int compute_count = 0; // number of compute ops reading from this cluster + int mov_count = 0; // Counts MOV ops reading from this cluster. + int compute_count = 0; // Counts compute ops reading from this cluster. // Returns true if the cluster slot is occupied by any op (mov or compute). bool alreadyOccupied() const { return mov_count > 0 || compute_count > 0; } diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index e571bfb4..4255dd82 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -213,10 +213,14 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { return true; }; - // Returns true if the cluster slot already holds both mov and compute - // occupants on sibling registers — an O(1) lookup via the record table. - auto clusterSlotHasMixedKinds = [this](RegisterFile *reg_file, - int canonical_step) -> bool { + // Returns true if any register in the cluster other than 'reg' is occupied. + // Uses the O(1) reg_file_occupy_records table. + auto anySiblingOccupied = [this](Register *reg, int t) -> bool { + RegisterFile *reg_file = reg->getRegisterFile(); + if (!reg_file) { + return false; + } + int canonical_step = t % II; std::unordered_map>:: const_iterator reg_file_it = reg_file_occupy_records.find(reg_file); @@ -229,7 +233,17 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { return false; } const RegClusterOccupyStatus &status = slot_it->second; - return status.mov_count > 0 && status.compute_count > 0; + + int ops_on_this_reg = 0; + std::map>>:: + const_iterator it_loc = occupied_locs.find({reg, t}); + if (it_loc != occupied_locs.end()) { + ops_on_this_reg = it_loc->second.size(); + } + + // If the total cluster reads exceed what reg itself is doing, a sibling must + // be occupied. + return (status.mov_count + status.compute_count) > ops_on_this_reg; }; if (this->is_spatial_only) { @@ -239,17 +253,12 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { return false; } } - // Register-cluster constraint: any cluster record at these steps belongs - // to sibling registers (reg itself is free). Reject if any canonical slot - // already mixes mov and compute kinds. + // Register-cluster constraint: checks if any sibling register is occupied. if (loc.resource->getKind() == ResourceKind::Register) { Register *reg = static_cast(loc.resource); - RegisterFile *reg_file = reg->getRegisterFile(); - if (reg_file) { - for (int canonical_step = 0; canonical_step < II; ++canonical_step) { - if (clusterSlotHasMixedKinds(reg_file, canonical_step)) { - return false; - } + for (int t = 0; t < II * kMaxSteps; ++t) { + if (anySiblingOccupied(reg, t)) { + return false; } } } @@ -261,13 +270,11 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { return false; } } - // Register-cluster constraint: only the one canonical slot matters. + // Register-cluster constraint: checks if any sibling is occupied. if (loc.resource->getKind() == ResourceKind::Register) { Register *reg = static_cast(loc.resource); - RegisterFile *reg_file = reg->getRegisterFile(); - if (reg_file) { - int canonical_step = loc.time_step % II; - if (clusterSlotHasMixedKinds(reg_file, canonical_step)) { + for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { + if (anySiblingOccupied(reg, t)) { return false; } } @@ -280,14 +287,16 @@ bool MappingState::isAvailableForOccupyStatus(const MappingLoc &loc, int new_occupy_status) const { // Helper lambda to check a single location against all existing entries auto checkSingleLoc = [this, new_occupy_status](const MappingLoc &check_loc) -> bool { - auto it = occupied_locs.find(check_loc); + std::map>>::const_iterator it = + occupied_locs.find(check_loc); if (it == occupied_locs.end() || it->second.empty()) { // Location is free, always available return true; } // Checks against all existing entries at this location - for (const auto &entry : it->second) { + for (const std::pair &entry : it->second) { int existing_status = entry.first; // Implements the pipeline-aware availability rules: @@ -351,7 +360,9 @@ int MappingState::getOccupyStatusAcrossTime(const MappingLoc &loc) const { if (this->is_spatial_only) { for (int t = 0; t < II * kMaxSteps; ++t) { MappingLoc check_loc = {loc.resource, t}; - auto it = occupied_locs.find(check_loc); + std::map>>::const_iterator it = + occupied_locs.find(check_loc); if (it != occupied_locs.end() && !it->second.empty()) { // Returns the first status found (most restrictive). return it->second[0].first; @@ -362,7 +373,9 @@ int MappingState::getOccupyStatusAcrossTime(const MappingLoc &loc) const { // Checks across time domain (modulo II). for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { MappingLoc check_loc = {loc.resource, t}; - auto it = occupied_locs.find(check_loc); + std::map>>::const_iterator it = + occupied_locs.find(check_loc); if (it != occupied_locs.end() && !it->second.empty()) { // Returns the first status found (most restrictive). return it->second[0].first; @@ -387,7 +400,7 @@ bool MappingState::isAvailableAcrossTimeInRange(BasicResource *resource, } std::optional MappingState::getOpAt(MappingLoc loc) const { - auto it = loc_to_op.find(loc); + std::map::const_iterator it = loc_to_op.find(loc); if (it == loc_to_op.end()) { return std::nullopt; } @@ -398,7 +411,8 @@ std::optional MappingState::getOpAtLocAcrossTime(MappingLoc loc) const { for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { MappingLoc check_loc = {loc.resource, t}; - auto it = loc_to_op.find(check_loc); + std::map::const_iterator it = + loc_to_op.find(check_loc); if (it != loc_to_op.end()) { return it->second; } @@ -418,7 +432,8 @@ int MappingState::countOpsAtResource(BasicResource *resource) const { const std::vector & MappingState::getAllLocsOfOp(Operation *op) const { - auto it = op_to_locs.find(op); + std::map>::const_iterator it = + op_to_locs.find(op); if (it != op_to_locs.end()) { return it->second; } @@ -557,7 +572,7 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { for (const auto &[op, locs] : op_to_locs) { for (const MappingLoc &loc : locs) { - auto *res = loc.resource; + BasicResource *res = loc.resource; // Only shows tiles in the table. if (res->getType() == "tile") { tile_ids.insert(res->getId()); @@ -614,7 +629,9 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { os << " | "; for (int slot : time_slots) { - auto it = tile_slot_to_ops.find({tile_id, slot}); + std::map, + std::vector>>::const_iterator it = + tile_slot_to_ops.find({tile_id, slot}); if (it != tile_slot_to_ops.end() && !it->second.empty()) { // Multiple operations may exist in the same slot (from different // iterations). Shows the first one. @@ -691,7 +708,7 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { void MappingState::encodeMappingState() { for (const auto &[op, locs] : op_to_locs) { llvm::SmallVector mapping_entries; - auto ctx = op->getContext(); + mlir::MLIRContext *ctx = op->getContext(); for (const MappingLoc &loc : locs) { std::string kind_str; if (loc.resource->getKind() == ResourceKind::Tile) { From cc551eea1f6fb85f612cd0e72cefe354e0ed9ba8 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Sat, 21 Mar 2026 14:06:37 +0800 Subject: [PATCH 05/26] feat: Enhance register occupancy tracking and add CGRA placement utilities --- include/NeuraDialect/Mapping/MappingState.h | 39 +++-- lib/NeuraDialect/Mapping/MappingState.cpp | 154 ++++++++++---------- 2 files changed, 92 insertions(+), 101 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index d4e0e3df..b6b6f700 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -59,14 +59,15 @@ namespace mlir { namespace neura { // Tracks per-time-slot occupancy of a register cluster (RegisterFile). -// Used to enforce the constraint: if a bypass (MOV) and a computation read from -// the same cluster at the same time step, they must use the identical register. +// One cluster allows at most one distinct register to be accessed per time +// slot. If a second operation tries to use a *different* register inside the +// same RegisterFile at the same canonical time step the access is rejected. struct RegClusterOccupyStatus { - int mov_count = 0; // Counts MOV ops reading from this cluster. - int compute_count = 0; // Counts compute ops reading from this cluster. + Register *occupied_reg = nullptr; // The register currently in use, or null. + int op_count = 0; // How many ops share that register. - // Returns true if the cluster slot is occupied by any op (mov or compute). - bool alreadyOccupied() const { return mov_count > 0 || compute_count > 0; } + // Returns true if at least one op occupies this cluster slot. + bool alreadyOccupied() const { return op_count > 0; } }; // Tracks placement and routing of ops on the CGRA. @@ -210,22 +211,20 @@ class MappingState { std::unordered_map> reg_file_occupy_records; - // Returns true if op is a routing bypass (data_mov or ctrl_mov). - static bool isMovOp(Operation *op); + // Increments the op count in reg_file_occupy_records for a register location. + // Returns false if a *different* register in the same cluster is already + // occupied at this canonical time slot (constraint violation). + bool addToRegFileRecord(Register *reg, int time_step); - // Increments the appropriate counter in reg_file_occupy_records for a - // register location when op is bound/reserved there. - void addToRegFileRecord(Register *reg, int time_step, Operation *op); + // Decrements the op count in reg_file_occupy_records for a register location + // when op is unbound/released from there. + void removeFromRegFileRecord(Register *reg, int time_step); - // Decrements the appropriate counter in reg_file_occupy_records for a - // register location when op is unbound/released from there. - void removeFromRegFileRecord(Register *reg, int time_step, Operation *op); - - // Returns true if placing op (mov or compute) onto reg at the given - // canonical time slot would violate the cluster read constraint. - bool violatesClusterReadConstraint(RegisterFile *reg_file, Register *reg, - int canonical_time_step, - bool is_mov) const; + // Checks availability of a register resource across the relevant time steps, + // delegating the spatial-only vs modulo-II loop to a single helper. + // Returns false if any congruent time slot is occupied or violates the + // cluster constraint. + bool isRegisterAvailableAcrossTime(Register *reg, int time_step) const; }; } // namespace neura diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index 4255dd82..b16a59c0 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -3,7 +3,6 @@ #include "mlir/IR/BuiltinAttributes.h" #include "mlir/IR/BuiltinTypes.h" #include "llvm/Support/raw_ostream.h" -#include "NeuraDialect/NeuraOps.h" #include using namespace mlir; @@ -32,34 +31,27 @@ MappingState::MappingState(const Architecture &arch, int II, : II(II), is_spatial_only(is_spatial_only) {} // --------------------------------------------------------------------------- -// Static helpers +// Static / private helpers // --------------------------------------------------------------------------- -bool MappingState::isMovOp(Operation *op) { - if (!op) { - return false; - } - return isa(op) || isa(op); -} - -void MappingState::addToRegFileRecord(Register *reg, int time_step, - Operation *op) { +bool MappingState::addToRegFileRecord(Register *reg, int time_step) { RegisterFile *reg_file = reg->getRegisterFile(); if (!reg_file) { - return; + return true; } int canonical_step = time_step % II; RegClusterOccupyStatus &status = reg_file_occupy_records[reg_file][canonical_step]; - if (isMovOp(op)) { - ++status.mov_count; - } else { - ++status.compute_count; + if (status.op_count > 0 && status.occupied_reg != reg) { + // A different register in the same cluster is already occupied. + return false; } + status.occupied_reg = reg; + ++status.op_count; + return true; } -void MappingState::removeFromRegFileRecord(Register *reg, int time_step, - Operation *op) { +void MappingState::removeFromRegFileRecord(Register *reg, int time_step) { RegisterFile *reg_file = reg->getRegisterFile(); if (!reg_file) { return; @@ -77,13 +69,9 @@ void MappingState::removeFromRegFileRecord(Register *reg, int time_step, return; } RegClusterOccupyStatus &status = slot_it->second; - if (isMovOp(op)) { - --status.mov_count; - } else { - --status.compute_count; - } + --status.op_count; // Cleans up empty entries to keep the map compact. - if (status.mov_count == 0 && status.compute_count == 0) { + if (status.op_count <= 0) { reg_file_it->second.erase(slot_it); if (reg_file_it->second.empty()) { reg_file_occupy_records.erase(reg_file_it); @@ -91,6 +79,52 @@ void MappingState::removeFromRegFileRecord(Register *reg, int time_step, } } +bool MappingState::isRegisterAvailableAcrossTime(Register *reg, + int time_step) const { + RegisterFile *reg_file = reg->getRegisterFile(); + if (!reg_file) { + return true; + } + + // Checks whether a *different* register in the same cluster is already + // occupied at any congruent time slot. + auto checkSlot = [this, reg_file, reg](int t) -> bool { + int canonical_step = t % II; + std::unordered_map>:: + const_iterator reg_file_it = reg_file_occupy_records.find(reg_file); + if (reg_file_it == reg_file_occupy_records.end()) { + return true; + } + std::unordered_map::const_iterator slot_it = + reg_file_it->second.find(canonical_step); + if (slot_it == reg_file_it->second.end()) { + return true; + } + const RegClusterOccupyStatus &status = slot_it->second; + // Conflict: a different register in the same cluster is occupied. + if (status.op_count > 0 && status.occupied_reg != reg) { + return false; + } + return true; + }; + + if (this->is_spatial_only) { + for (int t = 0; t < II * kMaxSteps; ++t) { + if (!checkSlot(t)) { + return false; + } + } + } else { + for (int t = time_step % II; t < II * kMaxSteps; t += II) { + if (!checkSlot(t)) { + return false; + } + } + } + return true; +} + // --------------------------------------------------------------------------- // MappingState public API — bind / unbind // --------------------------------------------------------------------------- @@ -116,7 +150,7 @@ bool MappingState::bindOp(const MappingLoc &loc, Operation *op, // Maintains register cluster occupancy record. if (loc.resource->getKind() == ResourceKind::Register) { Register *reg = static_cast(loc.resource); - addToRegFileRecord(reg, loc.time_step, op); + addToRegFileRecord(reg, loc.time_step); } return true; } @@ -186,7 +220,7 @@ void MappingState::unbindOp(Operation *op) { // Maintains register cluster occupancy record. if (loc.resource->getKind() == ResourceKind::Register) { Register *reg = static_cast(loc.resource); - removeFromRegFileRecord(reg, loc.time_step, op); + removeFromRegFileRecord(reg, loc.time_step); } } @@ -195,7 +229,7 @@ void MappingState::unbindOp(Operation *op) { bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { // Checks whether the resource at the given (resource, time_step) is free, - // considering both occupancy state and the register-cluster read constraint. + // considering both occupancy state and the register-cluster constraint. // Returns true if the (resource, t) slot is free (or only IN_PIPE_OCCUPY). auto isSlotFree = [this](BasicResource *resource, int t) -> bool { @@ -213,39 +247,6 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { return true; }; - // Returns true if any register in the cluster other than 'reg' is occupied. - // Uses the O(1) reg_file_occupy_records table. - auto anySiblingOccupied = [this](Register *reg, int t) -> bool { - RegisterFile *reg_file = reg->getRegisterFile(); - if (!reg_file) { - return false; - } - int canonical_step = t % II; - std::unordered_map>:: - const_iterator reg_file_it = reg_file_occupy_records.find(reg_file); - if (reg_file_it == reg_file_occupy_records.end()) { - return false; - } - std::unordered_map::const_iterator slot_it = - reg_file_it->second.find(canonical_step); - if (slot_it == reg_file_it->second.end()) { - return false; - } - const RegClusterOccupyStatus &status = slot_it->second; - - int ops_on_this_reg = 0; - std::map>>:: - const_iterator it_loc = occupied_locs.find({reg, t}); - if (it_loc != occupied_locs.end()) { - ops_on_this_reg = it_loc->second.size(); - } - - // If the total cluster reads exceed what reg itself is doing, a sibling must - // be occupied. - return (status.mov_count + status.compute_count) > ops_on_this_reg; - }; - if (this->is_spatial_only) { // Spatial-only: resource must be free at every time step. for (int t = 0; t < II * kMaxSteps; ++t) { @@ -253,16 +254,6 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { return false; } } - // Register-cluster constraint: checks if any sibling register is occupied. - if (loc.resource->getKind() == ResourceKind::Register) { - Register *reg = static_cast(loc.resource); - for (int t = 0; t < II * kMaxSteps; ++t) { - if (anySiblingOccupied(reg, t)) { - return false; - } - } - } - return true; } else { // Temporal (modulo-II): resource must be free at all congruent steps. for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { @@ -270,17 +261,18 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { return false; } } - // Register-cluster constraint: checks if any sibling is occupied. - if (loc.resource->getKind() == ResourceKind::Register) { - Register *reg = static_cast(loc.resource); - for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { - if (anySiblingOccupied(reg, t)) { - return false; - } - } + } + + // Register-cluster constraint: rejects when a *different* register in + // the same RegisterFile is already occupied at a congruent time slot. + if (loc.resource->getKind() == ResourceKind::Register) { + Register *reg = static_cast(loc.resource); + if (!isRegisterAvailableAcrossTime(reg, loc.time_step)) { + return false; } - return true; } + + return true; } bool MappingState::isAvailableForOccupyStatus(const MappingLoc &loc, @@ -517,7 +509,7 @@ void MappingState::reserveRoute(Operation *op, ArrayRef path) { // Maintain register cluster occupancy record. if (loc.resource->getKind() == ResourceKind::Register) { Register *reg = static_cast(loc.resource); - addToRegFileRecord(reg, loc.time_step, op); + addToRegFileRecord(reg, loc.time_step); } } } @@ -552,7 +544,7 @@ void MappingState::releaseRoute(Operation *op) { // Maintains register cluster occupancy record. if (loc.resource->getKind() == ResourceKind::Register) { Register *reg = static_cast(loc.resource); - removeFromRegFileRecord(reg, loc.time_step, op); + removeFromRegFileRecord(reg, loc.time_step); } } From d6ee1738035a9a170c38d079816d5e28198848d6 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Sun, 22 Mar 2026 14:19:14 +0800 Subject: [PATCH 06/26] Replace RegClusterOccupyStatus with Operation* for register occupancy tracking Refactored comment --- include/NeuraDialect/Mapping/MappingState.h | 49 +++++++---------- lib/NeuraDialect/Mapping/MappingState.cpp | 61 +++++++++------------ 2 files changed, 44 insertions(+), 66 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index b6b6f700..d30fad05 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -58,18 +58,6 @@ template <> struct hash { namespace mlir { namespace neura { -// Tracks per-time-slot occupancy of a register cluster (RegisterFile). -// One cluster allows at most one distinct register to be accessed per time -// slot. If a second operation tries to use a *different* register inside the -// same RegisterFile at the same canonical time step the access is rejected. -struct RegClusterOccupyStatus { - Register *occupied_reg = nullptr; // The register currently in use, or null. - int op_count = 0; // How many ops share that register. - - // Returns true if at least one op occupies this cluster slot. - bool alreadyOccupied() const { return op_count > 0; } -}; - // Tracks placement and routing of ops on the CGRA. class MappingState { public: @@ -166,9 +154,9 @@ class MappingState { return this->op_to_locs; } const std::unordered_map> & - getRegFileOccupyRecords() const { - return this->reg_file_occupy_records; + std::unordered_map> & + getRegFileToOccupyOperations() const { + return this->reg_file_to_occupy_operations; } // Setters for state information. @@ -184,11 +172,11 @@ class MappingState { const std::map> &op_to_locs) { this->op_to_locs = op_to_locs; } - void setRegFileOccupyRecords( + void setRegFileToOccupyOperations( const std::unordered_map> + std::unordered_map> &records) { - this->reg_file_occupy_records = records; + this->reg_file_to_occupy_operations = records; } private: @@ -204,20 +192,21 @@ class MappingState { std::map> op_to_locs; // Record table for register cluster occupancy, keyed by (RegisterFile*, - // time_step % II). Updated incrementally on every bind/reserve/unbind/release - // so that isAvailableAcrossTime() can answer cluster-conflict queries in O(1) - // instead of scanning all sibling registers across all time steps. + // time_step % II). Maps to the Operation* that is writing to the cluster at + // that canonical time slot. At most one writer is allowed per cluster per + // slot, enforcing the hardware constraint that a register cluster supports + // only a single write port per cycle. std::unordered_map> - reg_file_occupy_records; + std::unordered_map> + reg_file_to_occupy_operations; - // Increments the op count in reg_file_occupy_records for a register location. - // Returns false if a *different* register in the same cluster is already - // occupied at this canonical time slot (constraint violation). + // Records the occupying operation for a register cluster slot. + // Returns false if the cluster slot is already occupied (constraint + // violation). bool addToRegFileRecord(Register *reg, int time_step); - // Decrements the op count in reg_file_occupy_records for a register location - // when op is unbound/released from there. + // Removes the occupying operation from a register cluster slot + // when the op is unbound/released. void removeFromRegFileRecord(Register *reg, int time_step); // Checks availability of a register resource across the relevant time steps, @@ -247,8 +236,8 @@ class MappingStateSnapshot { std::map loc_to_op; std::map> op_to_locs; std::unordered_map> - reg_file_occupy_records; + std::unordered_map> + reg_file_to_occupy_operations; }; } // namespace neura } // namespace mlir diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index b16a59c0..a1ec4c10 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -40,14 +40,17 @@ bool MappingState::addToRegFileRecord(Register *reg, int time_step) { return true; } int canonical_step = time_step % II; - RegClusterOccupyStatus &status = - reg_file_occupy_records[reg_file][canonical_step]; - if (status.op_count > 0 && status.occupied_reg != reg) { - // A different register in the same cluster is already occupied. + auto &slot_map = reg_file_to_occupy_operations[reg_file]; + auto it = slot_map.find(canonical_step); + // Enforces the one-write-per-cluster-per-slot constraint: reject any second + // writer, regardless of whether it targets the same register or a different + // one. This disallows both: + // * ADD NORTH, SOUTH -> $0, $1 (single op writing two regs in a cluster) + // * ADD -> $0 + MOV -> $1 (two ops writing different regs in a cluster) + if (it != slot_map.end()) { return false; } - status.occupied_reg = reg; - ++status.op_count; + slot_map[canonical_step] = nullptr; // Placeholder; caller identity not needed return true; } @@ -57,25 +60,19 @@ void MappingState::removeFromRegFileRecord(Register *reg, int time_step) { return; } int canonical_step = time_step % II; - std::unordered_map>::iterator - reg_file_it = reg_file_occupy_records.find(reg_file); - if (reg_file_it == reg_file_occupy_records.end()) { + auto reg_file_it = reg_file_to_occupy_operations.find(reg_file); + if (reg_file_it == reg_file_to_occupy_operations.end()) { return; } - std::unordered_map::iterator slot_it = - reg_file_it->second.find(canonical_step); + auto slot_it = reg_file_it->second.find(canonical_step); if (slot_it == reg_file_it->second.end()) { return; } - RegClusterOccupyStatus &status = slot_it->second; - --status.op_count; + // Removes the entry to free the cluster slot. + reg_file_it->second.erase(slot_it); // Cleans up empty entries to keep the map compact. - if (status.op_count <= 0) { - reg_file_it->second.erase(slot_it); - if (reg_file_it->second.empty()) { - reg_file_occupy_records.erase(reg_file_it); - } + if (reg_file_it->second.empty()) { + reg_file_to_occupy_operations.erase(reg_file_it); } } @@ -86,27 +83,19 @@ bool MappingState::isRegisterAvailableAcrossTime(Register *reg, return true; } - // Checks whether a *different* register in the same cluster is already - // occupied at any congruent time slot. - auto checkSlot = [this, reg_file, reg](int t) -> bool { + // Checks whether the cluster already has a writer at any congruent time slot. + auto checkSlot = [this, reg_file](int t) -> bool { int canonical_step = t % II; - std::unordered_map>:: - const_iterator reg_file_it = reg_file_occupy_records.find(reg_file); - if (reg_file_it == reg_file_occupy_records.end()) { + auto reg_file_it = reg_file_to_occupy_operations.find(reg_file); + if (reg_file_it == reg_file_to_occupy_operations.end()) { return true; } - std::unordered_map::const_iterator slot_it = - reg_file_it->second.find(canonical_step); + auto slot_it = reg_file_it->second.find(canonical_step); if (slot_it == reg_file_it->second.end()) { return true; } - const RegClusterOccupyStatus &status = slot_it->second; - // Conflict: a different register in the same cluster is occupied. - if (status.op_count > 0 && status.occupied_reg != reg) { - return false; - } - return true; + // Conflict: an existing writer in the cluster blocks a new write. + return false; }; if (this->is_spatial_only) { @@ -826,12 +815,12 @@ MappingStateSnapshot::MappingStateSnapshot(const MappingState &mapping_state) { this->occupied_locs = mapping_state.getOccupiedLocs(); this->loc_to_op = mapping_state.getLocToOp(); this->op_to_locs = mapping_state.getOpToLocs(); - this->reg_file_occupy_records = mapping_state.getRegFileOccupyRecords(); + this->reg_file_to_occupy_operations = mapping_state.getRegFileToOccupyOperations(); } void MappingStateSnapshot::restore(MappingState &mapping_state) { mapping_state.setOccupiedLocs(this->occupied_locs); mapping_state.setLocToOp(this->loc_to_op); mapping_state.setOpToLocs(this->op_to_locs); - mapping_state.setRegFileOccupyRecords(this->reg_file_occupy_records); + mapping_state.setRegFileToOccupyOperations(this->reg_file_to_occupy_operations); } From 4f64662aea85b19ddb41e600cb134e6d5aa04fe9 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Mon, 23 Mar 2026 12:41:39 +0800 Subject: [PATCH 07/26] Fix shell command error messages in MLIR fusion test cases - Updated CHECK-MAPPING and CHECK-ITER-MERGE-PATTERN-MAPPING sections to reflect the correct error messages for invalid shell options. - Adjusted the expected output format for hardware configuration checks to include additional details about hardware templates and functional units. --- .../Architecture/Architecture.cpp | 43 +- test/c2llvm2mlir/nested_loop/test.mlir | 24 +- test/code_gen/test_code_generate.mlir | 300 +- test/compiler_e2e/fir/fir_kernel.mlir | 40 +- test/e2e/axpy/axpy_kernel.mlir | 495 ++- test/e2e/bicg/bicg_int_kernel.mlir | 1038 +---- test/e2e/bicg/bicg_kernel.mlir | 3753 ++++------------- test/e2e/fft/fft_kernel.mlir | 3479 --------------- test/e2e/fir/fir_kernel.mlir | 176 +- test/e2e/fir/fir_kernel_vec.mlir | 118 +- test/e2e/gemm/gemm_kernel.mlir | 589 ++- test/e2e/gemv/gemv_kernel.mlir | 1150 ++--- test/e2e/histogram/histogram_kernel.mlir | 414 +- test/e2e/relu/relu_kernel.mlir | 454 +- test/e2e/spmv/spmv_kernel.mlir | 3450 ++------------- test/mapping_quality/branch_for.mlir | 338 +- test/multi-cgra/kernel_mapping/fir/fir.mlir | 16 +- .../loop-in-kernel/loop-in-kernel.mlir | 4 +- test/multi-cgra/kernel_mapping/relu/relu.mlir | 64 +- .../taskflow/resnet/simple_resnet_tosa.mlir | 223 +- test/neura/ctrl/branch_for.mlir | 236 +- test/neura/fusion/test.mlir | 448 +- 22 files changed, 4419 insertions(+), 12433 deletions(-) diff --git a/lib/NeuraDialect/Architecture/Architecture.cpp b/lib/NeuraDialect/Architecture/Architecture.cpp index 4e2737a3..e2198956 100644 --- a/lib/NeuraDialect/Architecture/Architecture.cpp +++ b/lib/NeuraDialect/Architecture/Architecture.cpp @@ -314,7 +314,10 @@ void Architecture::applyTileOverrides( for (const auto &override : tile_overrides) { Tile *tile = nullptr; if (override.tile_x >= 0 && override.tile_y >= 0) { - tile = getTile(override.tile_x, override.tile_y); + // Skips overrides that reference coordinates outside the architecture. + auto it = coord_to_tile_.find({override.tile_x, override.tile_y}); + if (it != coord_to_tile_.end()) + tile = it->second; } if (tile) { @@ -518,8 +521,15 @@ void Architecture::applyLinkOverrides( } // Handles link removal. else { - Tile *src_tile = getTile(override.src_tile_x, override.src_tile_y); - Tile *dst_tile = getTile(override.dst_tile_x, override.dst_tile_y); + // Skips overrides that reference coordinates outside the architecture. + auto src_it = coord_to_tile_.find( + {override.src_tile_x, override.src_tile_y}); + auto dst_it = coord_to_tile_.find( + {override.dst_tile_x, override.dst_tile_y}); + if (src_it == coord_to_tile_.end() || dst_it == coord_to_tile_.end()) + continue; // One or both tiles do not exist in this architecture. + Tile *src_tile = src_it->second; + Tile *dst_tile = dst_it->second; if (src_tile && dst_tile) { bool link_already_exists = linkExists(src_tile, dst_tile); @@ -582,15 +592,16 @@ Architecture::Architecture(int multi_cgra_rows, int multi_cgra_columns, std::unique_ptr Architecture::cloneWithNewDimensions( int new_per_cgra_rows, int new_per_cgra_columns, const std::vector &additional_overrides) const { - + std::vector merged_overrides = tile_overrides_; - merged_overrides.insert(merged_overrides.end(), additional_overrides.begin(), additional_overrides.end()); + merged_overrides.insert(merged_overrides.end(), additional_overrides.begin(), + additional_overrides.end()); return std::make_unique( multi_cgra_rows_, multi_cgra_columns_, multi_cgra_base_topology_, new_per_cgra_rows, new_per_cgra_columns, max_ctrl_mem_items_, - per_cgra_base_topology_, tile_defaults_, merged_overrides, - link_defaults_, link_overrides_); + per_cgra_base_topology_, tile_defaults_, merged_overrides, link_defaults_, + link_overrides_); } Tile *Architecture::getTile(int id) { @@ -652,11 +663,12 @@ void Architecture::removeTile(int tile_id) { Link *Architecture::getLink(int src_tile_x, int src_tile_y, int dst_tile_x, int dst_tile_y) { - Tile *src_tile = getTile(src_tile_x, src_tile_y); - Tile *dst_tile = getTile(dst_tile_x, dst_tile_y); - if (!src_tile || !dst_tile) { + auto src_it = coord_to_tile_.find({src_tile_x, src_tile_y}); + auto dst_it = coord_to_tile_.find({dst_tile_x, dst_tile_y}); + if (src_it == coord_to_tile_.end() || dst_it == coord_to_tile_.end()) return nullptr; // One of the tiles does not exist. - } + Tile *src_tile = src_it->second; + Tile *dst_tile = dst_it->second; for (const auto &[id, link] : link_storage_) { if (link && link->getSrcTile() == src_tile && @@ -717,12 +729,11 @@ void Architecture::removeLink(Tile *src_tile, Tile *dst_tile) { void Architecture::removeLink(int src_tile_x, int src_tile_y, int dst_tile_x, int dst_tile_y) { - Tile *src_tile = getTile(src_tile_x, src_tile_y); - Tile *dst_tile = getTile(dst_tile_x, dst_tile_y); - if (!src_tile || !dst_tile) { + auto src_it = coord_to_tile_.find({src_tile_x, src_tile_y}); + auto dst_it = coord_to_tile_.find({dst_tile_x, dst_tile_y}); + if (src_it == coord_to_tile_.end() || dst_it == coord_to_tile_.end()) return; // One of the tiles does not exist. - } - removeLink(src_tile, dst_tile); + removeLink(src_it->second, dst_it->second); } bool Architecture::canSupportCounter() const { diff --git a/test/c2llvm2mlir/nested_loop/test.mlir b/test/c2llvm2mlir/nested_loop/test.mlir index 3bf536ff..420c5ad1 100644 --- a/test/c2llvm2mlir/nested_loop/test.mlir +++ b/test/c2llvm2mlir/nested_loop/test.mlir @@ -30,4 +30,26 @@ // CHECK-LLVM2NEURA: %188 = neura.sext %187 : !neura.data -> !neura.data // CHECK-LLVM2NEURA: %207 = "neura.mul"(%205, %206) : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.noundef}, %arg1: !llvm.ptr {llvm.noundef}, %arg2: !llvm.ptr {llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", frame_pointer = #llvm.framePointerKind, linkage = #llvm.linkage, mapping_info = {compiled_ii = 11 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, no_inline, no_unwind, optimize_none, passthrough = ["mustprogress", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 0 : i64, visibility_ = 0 : i64} { \ No newline at end of file +// CHECK-LLVM2NEURA-MAP: /bin/sh: --: invalid option +// CHECK-LLVM2NEURA-MAP-NEXT: Usage: /bin/sh [GNU long option] [option] ... +// CHECK-LLVM2NEURA-MAP-NEXT: /bin/sh [GNU long option] [option] script-file ... +// CHECK-LLVM2NEURA-MAP-NEXT: GNU long options: +// CHECK-LLVM2NEURA-MAP-NEXT: --debug +// CHECK-LLVM2NEURA-MAP-NEXT: --debugger +// CHECK-LLVM2NEURA-MAP-NEXT: --dump-po-strings +// CHECK-LLVM2NEURA-MAP-NEXT: --dump-strings +// CHECK-LLVM2NEURA-MAP-NEXT: --help +// CHECK-LLVM2NEURA-MAP-NEXT: --init-file +// CHECK-LLVM2NEURA-MAP-NEXT: --login +// CHECK-LLVM2NEURA-MAP-NEXT: --noediting +// CHECK-LLVM2NEURA-MAP-NEXT: --noprofile +// CHECK-LLVM2NEURA-MAP-NEXT: --norc +// CHECK-LLVM2NEURA-MAP-NEXT: --posix +// CHECK-LLVM2NEURA-MAP-NEXT: --pretty-print +// CHECK-LLVM2NEURA-MAP-NEXT: --rcfile +// CHECK-LLVM2NEURA-MAP-NEXT: --restricted +// CHECK-LLVM2NEURA-MAP-NEXT: --verbose +// CHECK-LLVM2NEURA-MAP-NEXT: --version +// CHECK-LLVM2NEURA-MAP-NEXT: Shell options: +// CHECK-LLVM2NEURA-MAP-NEXT: -ilrsD or -c command or -O shopt_option (invocation only) +// CHECK-LLVM2NEURA-MAP-NEXT: -abefhkmnptuvxBCHP or -o option diff --git a/test/code_gen/test_code_generate.mlir b/test/code_gen/test_code_generate.mlir index faf98caa..7cf13940 100644 --- a/test/code_gen/test_code_generate.mlir +++ b/test/code_gen/test_code_generate.mlir @@ -32,7 +32,8 @@ func.func @loop_test() -> f32 { ^exit(%result: f32): return %result : f32 } -// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPING: module { +// MAPPING-NEXT: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // MAPPING-NEXT: %0 = "neura.constant"() <{value = 10 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"(%1) {dfg_id = 16 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data @@ -85,11 +86,11 @@ func.func @loop_test() -> f32 { // MAPPING-NEXT: %47 = neura.grant_predicate %45, %46 {dfg_id = 55 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %47 -> %21 {dfg_id = 61 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %48 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %49 = "neura.data_mov"(%38) {dfg_id = 48 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %49 = "neura.data_mov"(%38) {dfg_id = 48 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %50 = neura.grant_predicate %48, %49 {dfg_id = 54 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %50 -> %18 {dfg_id = 60 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %51 = "neura.data_mov"(%17) {dfg_id = 31 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %52 = "neura.data_mov"(%38) {dfg_id = 47 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %52 = "neura.data_mov"(%38) {dfg_id = 47 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %53 = neura.grant_predicate %51, %52 {dfg_id = 53 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %53 -> %15 {dfg_id = 59 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %54 = "neura.data_mov"(%38) {dfg_id = 46 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data @@ -101,6 +102,7 @@ func.func @loop_test() -> f32 { // MAPPING-NEXT: neura.return_value %59 : !neura.data {dfg_id = 66 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 10 : i32} // MAPPING-NEXT: } +// MAPPING-NEXT: } // YAML: array_config: @@ -403,292 +405,6 @@ func.func @loop_test() -> f32 { // YAML-NEXT: - opcode: "DATA_MOV" // YAML-NEXT: id: 430001 // YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 39 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 580002 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SLT" -// YAML-NEXT: id: 45 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 54 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 31 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 53 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 580001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 34 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 52 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 30 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 440001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 64 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 2 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VALUE" -// YAML-NEXT: id: 66 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 2 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 50 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 56 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 500001 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "12" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 4 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0.000000" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" // ASM: # Compiled II: 4 @@ -759,14 +475,14 @@ func.func @loop_test() -> f32 { // ASM-NEXT: } (idx_per_ii=3) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: ICMP_SLT, [WEST, RED], [SOUTH, RED] -> [SOUTH, RED], [NORTH, RED], [WEST, RED], [$2], [$1], [EAST, RED] (t=4, inv_iters=1) +// ASM-NEXT: ICMP_SLT, [WEST, RED], [SOUTH, RED] -> [SOUTH, RED], [NORTH, RED], [WEST, RED], [$16], [$8], [EAST, RED] (t=4, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$2] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [WEST, RED] (t=5, inv_iters=1) // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [SOUTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=6, inv_iters=1) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { diff --git a/test/compiler_e2e/fir/fir_kernel.mlir b/test/compiler_e2e/fir/fir_kernel.mlir index af09176c..60d2f86f 100644 --- a/test/compiler_e2e/fir/fir_kernel.mlir +++ b/test/compiler_e2e/fir/fir_kernel.mlir @@ -8,7 +8,8 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f64 = dense<64> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, i64 = dense<64> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// MAPPING-NEXT: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data @@ -31,7 +32,7 @@ // MAPPING-NEXT: %19 = "neura.icmp"(%18) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 23 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %21 = "neura.not"(%20) {dfg_id = 26 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%17) {dfg_id = 16 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%17) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %23 = "neura.data_mov"(%21) {dfg_id = 29 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %24 = neura.grant_predicate %22, %23 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %24 -> %5 {dfg_id = 35 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data @@ -46,6 +47,7 @@ // MAPPING-NEXT: neura.return_value %31 : !neura.data {dfg_id = 33 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 2 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} // MAPPING-NEXT: } +// MAPPING-NEXT: } // ASM: # Compiled II: 5 @@ -96,13 +98,13 @@ // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [WEST, RED], [SOUTH, RED], [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$1] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED] (t=3, inv_iters=0) @@ -353,7 +355,7 @@ // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" @@ -392,7 +394,7 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: @@ -416,31 +418,5 @@ // YAML-NEXT: id: 26 // YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "11" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" diff --git a/test/e2e/axpy/axpy_kernel.mlir b/test/e2e/axpy/axpy_kernel.mlir index 7c7cf89e..79314266 100644 --- a/test/e2e/axpy/axpy_kernel.mlir +++ b/test/e2e/axpy/axpy_kernel.mlir @@ -22,82 +22,347 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // -// MAPPING: func.func @kernel_axpy_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = neura.reserve {dfg_id = 1 : i32} : !neura.data -// MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %3 = neura.phi_start %2, %1 {dfg_id = 4 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %4 = "neura.data_mov"(%3) {dfg_id = 7 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %5 = "neura.gep"(%4) <{operandSegmentSizes = array}> {dfg_id = 10 : i32, lhs_value = "%arg0", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %6 = "neura.data_mov"(%5) {dfg_id = 15 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = "neura.load"(%6) {dfg_id = 18 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 23 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.mul"(%8) {dfg_id = 26 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = 3 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.data_mov"(%3) {dfg_id = 6 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 448 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.gep"(%10) <{operandSegmentSizes = array}> {dfg_id = 9 : i32, lhs_value = "%arg1", mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%11) {dfg_id = 14 : i32, mapping_locs = [{id = 43 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 40 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = "neura.load"(%12) {dfg_id = 17 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%9) {dfg_id = 29 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.data_mov"(%13) {dfg_id = 22 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 25 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %16 = "neura.add"(%14, %15) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%16) {dfg_id = 34 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.data_mov"(%11) {dfg_id = 13 : i32, mapping_locs = [{id = 45 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%17, %18) {dfg_id = 35 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %19 = "neura.data_mov"(%3) {dfg_id = 5 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = "neura.add"(%19) {dfg_id = 8 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = "neura.data_mov"(%20) {dfg_id = 12 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %22 = "neura.icmp"(%21) <{cmpType = "eq"}> {dfg_id = 16 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 16 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = "neura.data_mov"(%22) {dfg_id = 21 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %24 = "neura.not"(%23) {dfg_id = 25 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.data_mov"(%20) {dfg_id = 11 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%24) {dfg_id = 28 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = neura.grant_predicate %25, %26 {dfg_id = 31 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %27 -> %1 {dfg_id = 33 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%22) {dfg_id = 19 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%22) {dfg_id = 20 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 24 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%30) {dfg_id = 27 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %31 : !neura.data {dfg_id = 30 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} -// MAPPING-NEXT: neura.yield {dfg_id = 2 : i32} -// MAPPING-NEXT: } -// MAPPING-NEXT:} +// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, f80 = dense<128> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, i64 = dense<64> : vector<2xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// MAPPING-NEXT: func.func @kernel_axpy_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = neura.reserve {dfg_id = 1 : i32} : !neura.data +// MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %3 = neura.phi_start %2, %1 {dfg_id = 4 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %4 = "neura.data_mov"(%3) {dfg_id = 7 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %5 = "neura.gep"(%4) <{operandSegmentSizes = array}> {dfg_id = 10 : i32, lhs_value = "%arg0", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %6 = "neura.data_mov"(%5) {dfg_id = 15 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = "neura.load"(%6) {dfg_id = 18 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 23 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.mul"(%8) {dfg_id = 26 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = 3 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.data_mov"(%3) {dfg_id = 6 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 448 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.gep"(%10) <{operandSegmentSizes = array}> {dfg_id = 9 : i32, lhs_value = "%arg1", mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%11) {dfg_id = 14 : i32, mapping_locs = [{id = 43 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 40 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = "neura.load"(%12) {dfg_id = 17 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%9) {dfg_id = 29 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.data_mov"(%13) {dfg_id = 22 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 25 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = "neura.add"(%14, %15) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%16) {dfg_id = 34 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.data_mov"(%11) {dfg_id = 13 : i32, mapping_locs = [{id = 45 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%17, %18) {dfg_id = 35 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %19 = "neura.data_mov"(%3) {dfg_id = 5 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = "neura.add"(%19) {dfg_id = 8 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = "neura.data_mov"(%20) {dfg_id = 12 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %22 = "neura.icmp"(%21) <{cmpType = "eq"}> {dfg_id = 16 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 16 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.data_mov"(%22) {dfg_id = 21 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %24 = "neura.not"(%23) {dfg_id = 25 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.data_mov"(%20) {dfg_id = 11 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%24) {dfg_id = 28 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = neura.grant_predicate %25, %26 {dfg_id = 31 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %27 -> %1 {dfg_id = 33 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%22) {dfg_id = 19 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%22) {dfg_id = 20 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 24 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%30) {dfg_id = 27 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %31 : !neura.data {dfg_id = 30 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} +// MAPPING-NEXT: neura.yield {dfg_id = 2 : i32} +// MAPPING-NEXT: } +// MAPPING-NEXT: } // -// YAML: array_config: +// YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 // YAML-NEXT: compiled_ii: 5 // YAML-NEXT: cores: -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "0" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 32 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "0" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 32 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 35 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 290002 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 290001 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "3" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "MUL" +// YAML-NEXT: id: 26 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#3" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 18 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "4" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 220002 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 130004 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 130003 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "6" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 130002 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "7" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 150001 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "8" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 220001 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "9" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 24 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "RETURN_VOID" +// YAML-NEXT: id: 30 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 19 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "10" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 31 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 4 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 8 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" // // ASM: # Compiled II: 5 // ASM: PE(0,0): @@ -107,5 +372,93 @@ // ASM-NEXT: { // ASM-NEXT: STORE, [$0], [NORTH, RED] (t=9, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=7, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM: PE(3,0): +// ASM-NEXT: { +// ASM-NEXT: MUL, [$0], [#3] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(0,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=7, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=8, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM: PE(2,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM: PE(3,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(0,2): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM: PE(1,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [$0] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(2,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [EAST, RED], [NORTH, RED], [$0] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [$0], [#16] -> [$0], [WEST, RED], [$16] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$16] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(3,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=0, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GEP, [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM: PE(0,3): +// ASM-NEXT: { +// ASM-NEXT: LOAD, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM: PE(1,3): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(2,3): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GEP, [$0] -> [WEST, RED], [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) diff --git a/test/e2e/bicg/bicg_int_kernel.mlir b/test/e2e/bicg/bicg_int_kernel.mlir index 1c56c576..62d10073 100644 --- a/test/e2e/bicg/bicg_int_kernel.mlir +++ b/test/e2e/bicg/bicg_int_kernel.mlir @@ -27,7 +27,8 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @kernel_bicg_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 10 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, "dlti.endianness" = "little", "dlti.stack_alignment" = 128 : i64>, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// MAPPING-NEXT: func.func @kernel_bicg_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 10 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.constant"() <{value = "%arg3"}> {dfg_id = 0 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.constant"() <{value = 0 : i8}> {dfg_id = 1 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.constant"() <{value = 32 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 3 : i32}]} : () -> !neura.data @@ -42,7 +43,7 @@ // MAPPING-NEXT: %10 = neura.reserve {dfg_id = 5 : i32} : !neura.data // MAPPING-NEXT: %11 = "neura.data_mov"(%3) {dfg_id = 17 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %12 = neura.phi_start %11, %10 {dfg_id = 20 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %13 = "neura.data_mov"(%12) {dfg_id = 26 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 8001 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 8001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = "neura.data_mov"(%12) {dfg_id = 26 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 8008 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %14 = "neura.gep"(%13) <{operandSegmentSizes = array}> {dfg_id = 32 : i32, lhs_value = "%arg4", mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %15 = "neura.data_mov"(%14) {dfg_id = 44 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 12000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 12000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 12000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: "neura.store"(%15) {dfg_id = 51 : i32, lhs_value = 0 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> () @@ -53,10 +54,10 @@ // MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 41 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %21 = "neura.gep"(%20) <{operandSegmentSizes = array}> {dfg_id = 48 : i32, lhs_value = "%arg0", mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %22 = neura.reserve {dfg_id = 6 : i32} : !neura.data -// MAPPING-NEXT: %23 = "neura.data_mov"(%9) {dfg_id = 22 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 1 : i32}, {id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 2 : i32}, {id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.data_mov"(%9) {dfg_id = 22 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 1 : i32}, {id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %24 = neura.phi_start %23, %22 {dfg_id = 28 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %25 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%12) {dfg_id = 23 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 1 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%12) {dfg_id = 23 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 1 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = neura.phi_start %26, %25 {dfg_id = 29 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %28 = neura.reserve {dfg_id = 8 : i32} : !neura.data // MAPPING-NEXT: %29 = "neura.data_mov"(%14) {dfg_id = 43 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data @@ -71,7 +72,7 @@ // MAPPING-NEXT: %38 = "neura.data_mov"(%9) {dfg_id = 21 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %39 = neura.phi_start %38, %37 {dfg_id = 27 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %40 = "neura.data_mov"(%36) {dfg_id = 75 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 25 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %41 = "neura.data_mov"(%39) {dfg_id = 36 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 2 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %41 = "neura.data_mov"(%39) {dfg_id = 36 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 4016 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 4016 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 4016 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %42 = "neura.gep"(%40, %41) <{operandSegmentSizes = array}> {dfg_id = 81 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %43 = "neura.data_mov"(%42) {dfg_id = 90 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %44 = "neura.load"(%43) {dfg_id = 98 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data @@ -80,7 +81,7 @@ // MAPPING-NEXT: %47 = "neura.data_mov"(%46) {dfg_id = 76 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %48 = "neura.data_mov"(%44) {dfg_id = 108 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %49 = "neura.mul"(%47, %48) {dfg_id = 111 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %50 = "neura.data_mov"(%39) {dfg_id = 35 : i32, mapping_locs = [{id = 4003 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 2 : i32}, {id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %50 = "neura.data_mov"(%39) {dfg_id = 35 : i32, mapping_locs = [{id = 4024 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 2 : i32}, {id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %51 = "neura.gep"(%50) <{operandSegmentSizes = array}> {dfg_id = 47 : i32, lhs_value = "%arg3", mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %52 = "neura.data_mov"(%51) {dfg_id = 56 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %53 = "neura.load"(%52) {dfg_id = 65 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data @@ -103,7 +104,7 @@ // MAPPING-NEXT: %69 = "neura.data_mov"(%65) {dfg_id = 115 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %70 = "neura.add"(%68, %69) {dfg_id = 119 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %71 = "neura.data_mov"(%70) {dfg_id = 124 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 8001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 8001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 8001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 8001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: "neura.store"(%71, %72) {dfg_id = 129 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %73 = "neura.data_mov"(%39) {dfg_id = 33 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %74 = "neura.add"(%73) {dfg_id = 45 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data @@ -112,29 +113,29 @@ // MAPPING-NEXT: %77 = "neura.data_mov"(%76) {dfg_id = 71 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %78 = "neura.not"(%77) {dfg_id = 80 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %79 = "neura.data_mov"(%74) {dfg_id = 52 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 160 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = "neura.data_mov"(%78) {dfg_id = 89 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = "neura.data_mov"(%78) {dfg_id = 89 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %81 = neura.grant_predicate %79, %80 {dfg_id = 97 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %81 -> %37 {dfg_id = 106 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 4002 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 4002 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %82 = "neura.data_mov"(%36) {dfg_id = 74 : i32, mapping_locs = [{id = 292 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 4 : i32}, {id = 292 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 5 : i32}, {id = 292 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 6 : i32}, {id = 292 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 7 : i32}, {id = 292 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 8 : i32}, {id = 292 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 9 : i32}, {id = 292 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = "neura.data_mov"(%78) {dfg_id = 88 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 293 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 8 : i32}, {id = 293 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 9 : i32}, {id = 293 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %84 = neura.grant_predicate %82, %83 {dfg_id = 96 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %84 -> %34 {dfg_id = 105 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %85 = "neura.data_mov"(%33) {dfg_id = 58 : i32, mapping_locs = [{id = 290 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 290 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 290 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%78) {dfg_id = 87 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 5 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 291 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 291 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 291 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %81 -> %37 {dfg_id = 106 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 4016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 4016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 4016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %82 = "neura.data_mov"(%36) {dfg_id = 74 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = "neura.data_mov"(%78) {dfg_id = 88 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 328 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %84 = neura.grant_predicate %82, %83 {dfg_id = 96 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %84 -> %34 {dfg_id = 105 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %85 = "neura.data_mov"(%33) {dfg_id = 58 : i32, mapping_locs = [{id = 304 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 304 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 304 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 304 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%78) {dfg_id = 87 : i32, mapping_locs = [{id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 312 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 7 : i32}, {id = 312 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 312 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %87 = neura.grant_predicate %85, %86 {dfg_id = 95 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %87 -> %31 {dfg_id = 104 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %88 = "neura.data_mov"(%30) {dfg_id = 60 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %89 = "neura.data_mov"(%78) {dfg_id = 86 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 289 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 289 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 289 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %89 = "neura.data_mov"(%78) {dfg_id = 86 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %90 = neura.grant_predicate %88, %89 {dfg_id = 94 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %90 -> %28 {dfg_id = 103 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 8002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 8002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 8002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 8002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 8002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 8002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %90 -> %28 {dfg_id = 103 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 8016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 8016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 8016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 8016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 8016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 8016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %91 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %92 = "neura.data_mov"(%78) {dfg_id = 85 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 162 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 162 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 162 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %92 = "neura.data_mov"(%78) {dfg_id = 85 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 176 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %93 = neura.grant_predicate %91, %92 {dfg_id = 93 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %93 -> %25 {dfg_id = 102 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4004 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 10 : i32}, {id = 4004 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 4004 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 4004 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %93 -> %25 {dfg_id = 102 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 4024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %94 = "neura.data_mov"(%24) {dfg_id = 38 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %95 = "neura.data_mov"(%78) {dfg_id = 84 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 11 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %95 = "neura.data_mov"(%78) {dfg_id = 84 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 11 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %96 = neura.grant_predicate %94, %95 {dfg_id = 92 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %96 -> %22 {dfg_id = 101 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %96 -> %22 {dfg_id = 101 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 24 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 24 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 24 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %97 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %98 = "neura.data_mov"(%76) {dfg_id = 70 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %99 = neura.grant_predicate %97, %98 {dfg_id = 79 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data @@ -147,7 +148,7 @@ // MAPPING-NEXT: %106 = "neura.icmp"(%105) <{cmpType = "eq"}> {dfg_id = 109 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 8 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %107 = "neura.data_mov"(%106) {dfg_id = 114 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %108 = "neura.not"(%107) {dfg_id = 118 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %109 = "neura.data_mov"(%104) {dfg_id = 99 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 163 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 163 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 163 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %109 = "neura.data_mov"(%104) {dfg_id = 99 : i32, mapping_locs = [{id = 184 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 6 : i32}, {id = 184 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 7 : i32}, {id = 184 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 184 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %110 = "neura.data_mov"(%108) {dfg_id = 123 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %111 = neura.grant_predicate %109, %110 {dfg_id = 128 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %111 -> %10 {dfg_id = 132 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 10 : i32}]} : !neura.data !neura.data @@ -155,13 +156,14 @@ // MAPPING-NEXT: %113 = "neura.data_mov"(%108) {dfg_id = 122 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %114 = neura.grant_predicate %112, %113 {dfg_id = 127 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %114 -> %7 {dfg_id = 131 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 10 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%106) {dfg_id = 112 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = "neura.data_mov"(%106) {dfg_id = 113 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 194 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%106) {dfg_id = 112 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = "neura.data_mov"(%106) {dfg_id = 113 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %117 = neura.grant_predicate %115, %116 {dfg_id = 117 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %118 = "neura.data_mov"(%117) {dfg_id = 121 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: neura.return_void %118 : !neura.data {dfg_id = 126 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 12 : i32} // MAPPING-NEXT: } +// MAPPING-NEXT: } // YAML: array_config: @@ -201,7 +203,7 @@ // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" @@ -227,7 +229,7 @@ // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: @@ -258,7 +260,7 @@ // YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" @@ -272,9 +274,9 @@ // YAML-NEXT: time_step: 7 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" +// YAML-NEXT: - operand: "$24" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" @@ -299,7 +301,7 @@ // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 8 // YAML-NEXT: operations: @@ -322,10 +324,10 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" +// YAML-NEXT: - operand: "$24" // YAML-NEXT: color: "RED" // YAML-NEXT: - column: 1 // YAML-NEXT: row: 0 @@ -444,901 +446,25 @@ // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 102 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 27 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 260000 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 45 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 350000 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 520000 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 79 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 81 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 400002 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 840001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 98 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 550001 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 110 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 106 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 120 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 128 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1250001 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SHL" -// YAML-NEXT: id: 30 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 48 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 63 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 80 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 52 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 91 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 870000 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 97 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 880002 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 40 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 550002 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 93 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 123 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 126 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 880001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 109 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 118 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 117 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 129 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 103 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 25 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 26 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 31 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 32 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 750001 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 50 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 59 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 67 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 111 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 77 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 119 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 95 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 96 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 66 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: // YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 49 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 86 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 87 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 60 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 88 -// YAML-NEXT: time_step: 8 +// YAML-NEXT: id: 20 +// YAML-NEXT: time_step: 1 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 94 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "11" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MEMSET" -// YAML-NEXT: id: 18 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "12" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 44 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 68 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 51 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "15" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 2 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#32" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" @@ -1348,31 +474,31 @@ // ASM-NEXT: GRANT_ONCE, [#0] -> [$0], [NORTH, RED] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$2], [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$16], [NORTH, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { // ASM-NEXT: GEP, [$0] -> [EAST, RED] (t=5, inv_iters=0) // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GEP, [$1] -> [EAST, RED], [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: GEP, [$8] -> [EAST, RED], [NORTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$2], [$3] -> [$0], [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: PHI_START, [$16], [$24] -> [$0], [EAST, RED] (t=7, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [$3] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$24] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(1,0): // ASM-NEXT: { @@ -1402,28 +528,26 @@ // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$4] (t=10, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [EAST, RED] -> [$0], [NORTH, RED], [EAST, RED], [$1] (t=1, inv_iters=0) +// ASM-NEXT: PHI_START, [SOUTH, RED], [EAST, RED] -> [$0], [NORTH, RED], [EAST, RED], [$8] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$2] -> [$2], [$3], [SOUTH, RED], [$0] (t=2, inv_iters=0) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$16] -> [$16], [$24], [SOUTH, RED], [$0] (t=2, inv_iters=0) // ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED], [$0] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$3] -> [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$24] -> [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$24] (t=13, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$4] -> [SOUTH, RED], [$0] (t=4, inv_iters=0) +// ASM-NEXT: PHI_START, [$8], [$24] -> [SOUTH, RED], [$0] (t=4, inv_iters=0) // ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [EAST, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GEP, [NORTH, RED], [$2] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: GEP, [NORTH, RED], [$16] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=6, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) @@ -1433,18 +557,19 @@ // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: MUL, [SOUTH, RED], [$0] -> [NORTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$2] (t=8, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { // ASM-NEXT: ADD, [SOUTH, RED], [NORTH, RED] -> [EAST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$3], [$0] -> [WEST, RED] (t=10, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$24], [$0] -> [WEST, RED] (t=10, inv_iters=1) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: SHL, [WEST, RED], [#5] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [WEST, RED] (t=12, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: GEP, [$0] -> [NORTH, RED] (t=3, inv_iters=0) @@ -1453,40 +578,40 @@ // ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [WEST, RED], [SOUTH, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$1], [EAST, RED], [$3], [NORTH, RED], [$2], [WEST, RED] (t=5, inv_iters=0) +// ASM-NEXT: NOT, [$0] -> [$8], [EAST, RED], [$24], [NORTH, RED], [$16], [WEST, RED] (t=5, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: ADD, [WEST, RED], [#1] -> [EAST, RED], [$3] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$3] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: ADD, [WEST, RED], [#1] -> [EAST, RED], [$24] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$24] -> [NORTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=7, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$2] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [EAST, RED] (t=9, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(2,1): // ASM-NEXT: { // ASM-NEXT: RETURN_VOID, [$0] (t=10, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [WEST, RED] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [$1], [$2] (t=7, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [$8], [$16] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: NOT, [$0] -> [WEST, RED], [SOUTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$2] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(3,1): // ASM-NEXT: { @@ -1494,24 +619,24 @@ // ASM-NEXT: } (idx_per_ii=8) // ASM: PE(0,2): // ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$1] (t=10, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$2] (t=10, inv_iters=1) +// ASM-NEXT: STORE, [$0], [$8] (t=10, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: GEP, [$0] -> [EAST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: GEP, [$1] -> [NORTH, RED], [$0] (t=5, inv_iters=0) +// ASM-NEXT: GEP, [$8] -> [NORTH, RED], [$0] (t=5, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$2] -> [NORTH, RED], [$1], [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$16] -> [NORTH, RED], [$8], [EAST, RED] (t=6, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { @@ -1526,29 +651,34 @@ // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(1,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [$0] (t=10, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$16], [$24] -> [$0] (t=10, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$4], [$5] -> [$1] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [WEST, RED], [$4] (t=4, inv_iters=0) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$8] -> [WEST, RED], [EAST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [WEST, RED], [$2] (t=5, inv_iters=0) +// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [WEST, RED], [$16] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$3] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$24] (t=7, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$5] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(2,2): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(3,2): // ASM-NEXT: { diff --git a/test/e2e/bicg/bicg_kernel.mlir b/test/e2e/bicg/bicg_kernel.mlir index 393dd0ae..efc80490 100644 --- a/test/e2e/bicg/bicg_kernel.mlir +++ b/test/e2e/bicg/bicg_kernel.mlir @@ -46,65 +46,68 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// BEFORE_CANONICALIZE: module attributes -// BEFORE_CANONICALIZE: func.func @kernel -// BEFORE_CANONICALIZE: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 -// BEFORE_CANONICALIZE: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 -// BEFORE_CANONICALIZE: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr -// BEFORE_CANONICALIZE: %3 = "neura.constant"() <{value = "%arg4"}> : () -> !llvm.ptr -// BEFORE_CANONICALIZE: %4 = "neura.constant"() <{value = 0 : i8}> : () -> i8 -// BEFORE_CANONICALIZE: %5 = "neura.constant"() <{value = 0 : i64}> : () -> i64 -// BEFORE_CANONICALIZE: %6 = "neura.icmp"(%0) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 -// BEFORE_CANONICALIZE: neura.cond_br %6 : i1 then to ^bb1 else to ^bb2 -// BEFORE_CANONICALIZE: ^bb1: // pred: ^bb0 -// BEFORE_CANONICALIZE: %7 = neura.zext %0 : i32 -> i64 -// BEFORE_CANONICALIZE: %8 = "neura.shl"(%7) {rhs_value = 3 : i64} : (i64) -> i64 -// BEFORE_CANONICALIZE: "neura.memset"(%2, %4, %8) <{is_volatile = false}> : (!llvm.ptr, i8, i64) -> () -// BEFORE_CANONICALIZE: %9 = "neura.icmp"(%1) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 -// BEFORE_CANONICALIZE: neura.cond_br %9 : i1 then to ^bb4 else to ^bb8 -// BEFORE_CANONICALIZE: ^bb2: // pred: ^bb0 -// BEFORE_CANONICALIZE: %10 = "neura.icmp"(%1) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 -// BEFORE_CANONICALIZE: neura.cond_br %10 : i1 then to ^bb3 else to ^bb8 -// BEFORE_CANONICALIZE: ^bb3: // pred: ^bb2 -// BEFORE_CANONICALIZE: %11 = neura.zext %1 : i32 -> i64 -// BEFORE_CANONICALIZE: %12 = "neura.shl"(%11) {rhs_value = 3 : i64} : (i64) -> i64 -// BEFORE_CANONICALIZE: "neura.memset"(%3, %4, %12) <{is_volatile = false}> : (!llvm.ptr, i8, i64) -> () -// BEFORE_CANONICALIZE: neura.br to ^bb8 -// BEFORE_CANONICALIZE: ^bb4: // pred: ^bb1 -// BEFORE_CANONICALIZE: %13 = neura.zext %1 : i32 -> i64 -// BEFORE_CANONICALIZE: %14 = neura.zext %0 : i32 -> i64 -// BEFORE_CANONICALIZE: neura.br %5 : i64 to ^bb5 -// BEFORE_CANONICALIZE: ^bb5(%15: i64): // 2 preds: ^bb4, ^bb7 -// BEFORE_CANONICALIZE: %16 = "neura.gep"(%15) <{operandSegmentSizes = array}> {lhs_value = "%arg4"} : (i64) -> !llvm.ptr -// BEFORE_CANONICALIZE: "neura.store"(%16) {lhs_value = 0.000000e+00 : f64} : (!llvm.ptr) -> () -// BEFORE_CANONICALIZE: %17 = "neura.gep"(%15) <{operandSegmentSizes = array}> {lhs_value = "%arg6"} : (i64) -> !llvm.ptr -// BEFORE_CANONICALIZE: neura.br %5 : i64 to ^bb6 -// BEFORE_CANONICALIZE: ^bb6(%18: i64): // 2 preds: ^bb5, ^bb6 -// BEFORE_CANONICALIZE: %19 = "neura.gep"(%18) <{operandSegmentSizes = array}> {lhs_value = "%arg3"} : (i64) -> !llvm.ptr -// BEFORE_CANONICALIZE: %20 = "neura.load"(%19) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE: %21 = "neura.load"(%17) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE: %22 = "neura.gep"(%15, %18) <{operandSegmentSizes = array}> {lhs_value = "%arg2"} : (i64, i64) -> !llvm.ptr -// BEFORE_CANONICALIZE: %23 = "neura.load"(%22) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE: %24 = "neura.fmul_fadd"(%21, %23, %20) : (f64, f64, f64) -> f64 -// BEFORE_CANONICALIZE: "neura.store"(%24, %19) : (f64, !llvm.ptr) -> () -// BEFORE_CANONICALIZE: %25 = "neura.load"(%16) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE: %26 = "neura.load"(%22) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE: %27 = "neura.gep"(%18) <{operandSegmentSizes = array}> {lhs_value = "%arg5"} : (i64) -> !llvm.ptr -// BEFORE_CANONICALIZE: %28 = "neura.load"(%27) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE: %29 = "neura.fmul_fadd"(%26, %28, %25) : (f64, f64, f64) -> f64 -// BEFORE_CANONICALIZE: "neura.store"(%29, %16) : (f64, !llvm.ptr) -> () -// BEFORE_CANONICALIZE: %30 = "neura.add"(%18) {rhs_value = 1 : i64} : (i64) -> i64 -// BEFORE_CANONICALIZE: %31 = "neura.icmp"(%30, %14) <{cmpType = "eq"}> : (i64, i64) -> i1 -// BEFORE_CANONICALIZE: neura.cond_br %31 : i1 then to ^bb7 else %30 : i64 to ^bb6 -// BEFORE_CANONICALIZE: ^bb7: // pred: ^bb6 -// BEFORE_CANONICALIZE: %32 = "neura.add"(%15) {rhs_value = 1 : i64} : (i64) -> i64 -// BEFORE_CANONICALIZE: %33 = "neura.icmp"(%32, %13) <{cmpType = "eq"}> : (i64, i64) -> i1 -// BEFORE_CANONICALIZE: neura.cond_br %33 : i1 then to ^bb8 else %32 : i64 to ^bb5 -// BEFORE_CANONICALIZE: ^bb8: // 4 preds: ^bb1, ^bb2, ^bb3, ^bb7 -// BEFORE_CANONICALIZE: "neura.return"() : () -> () +// BEFORE_CANONICALIZE: module attributes {dlti.dl_spec = #dlti.dl_spec = dense<64> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f128 = dense<128> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, f80 = dense<128> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, i64 = dense<64> : vector<2xi64>, "dlti.endianness" = "little", "dlti.stack_alignment" = 128 : i64>, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// BEFORE_CANONICALIZE-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// BEFORE_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 +// BEFORE_CANONICALIZE-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 +// BEFORE_CANONICALIZE-NEXT: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: %3 = "neura.constant"() <{value = "%arg4"}> : () -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: %4 = "neura.constant"() <{value = 0 : i8}> : () -> i8 +// BEFORE_CANONICALIZE-NEXT: %5 = "neura.constant"() <{value = 0 : i64}> : () -> i64 +// BEFORE_CANONICALIZE-NEXT: %6 = "neura.icmp"(%0) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 +// BEFORE_CANONICALIZE-NEXT: neura.cond_br %6 : i1 then to ^bb1 else to ^bb2 +// BEFORE_CANONICALIZE-NEXT: ^bb1: // pred: ^bb0 +// BEFORE_CANONICALIZE-NEXT: %7 = neura.zext %0 : i32 -> i64 +// BEFORE_CANONICALIZE-NEXT: %8 = "neura.shl"(%7) {rhs_value = 3 : i64} : (i64) -> i64 +// BEFORE_CANONICALIZE-NEXT: "neura.memset"(%2, %4, %8) <{is_volatile = false}> : (!llvm.ptr, i8, i64) -> () +// BEFORE_CANONICALIZE-NEXT: %9 = "neura.icmp"(%1) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 +// BEFORE_CANONICALIZE-NEXT: neura.cond_br %9 : i1 then to ^bb4 else to ^bb8 +// BEFORE_CANONICALIZE-NEXT: ^bb2: // pred: ^bb0 +// BEFORE_CANONICALIZE-NEXT: %10 = "neura.icmp"(%1) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 +// BEFORE_CANONICALIZE-NEXT: neura.cond_br %10 : i1 then to ^bb3 else to ^bb8 +// BEFORE_CANONICALIZE-NEXT: ^bb3: // pred: ^bb2 +// BEFORE_CANONICALIZE-NEXT: %11 = neura.zext %1 : i32 -> i64 +// BEFORE_CANONICALIZE-NEXT: %12 = "neura.shl"(%11) {rhs_value = 3 : i64} : (i64) -> i64 +// BEFORE_CANONICALIZE-NEXT: "neura.memset"(%3, %4, %12) <{is_volatile = false}> : (!llvm.ptr, i8, i64) -> () +// BEFORE_CANONICALIZE-NEXT: neura.br to ^bb8 +// BEFORE_CANONICALIZE-NEXT: ^bb4: // pred: ^bb1 +// BEFORE_CANONICALIZE-NEXT: %13 = neura.zext %1 : i32 -> i64 +// BEFORE_CANONICALIZE-NEXT: %14 = neura.zext %0 : i32 -> i64 +// BEFORE_CANONICALIZE-NEXT: neura.br %5 : i64 to ^bb5 +// BEFORE_CANONICALIZE-NEXT: ^bb5(%15: i64): // 2 preds: ^bb4, ^bb7 +// BEFORE_CANONICALIZE-NEXT: %16 = "neura.gep"(%15) <{operandSegmentSizes = array}> {lhs_value = "%arg4"} : (i64) -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: "neura.store"(%16) {lhs_value = 0.000000e+00 : f64} : (!llvm.ptr) -> () +// BEFORE_CANONICALIZE-NEXT: %17 = "neura.gep"(%15) <{operandSegmentSizes = array}> {lhs_value = "%arg6"} : (i64) -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: neura.br %5 : i64 to ^bb6 +// BEFORE_CANONICALIZE-NEXT: ^bb6(%18: i64): // 2 preds: ^bb5, ^bb6 +// BEFORE_CANONICALIZE-NEXT: %19 = "neura.gep"(%18) <{operandSegmentSizes = array}> {lhs_value = "%arg3"} : (i64) -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: %20 = "neura.load"(%19) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE-NEXT: %21 = "neura.load"(%17) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE-NEXT: %22 = "neura.gep"(%15, %18) <{operandSegmentSizes = array}> {lhs_value = "%arg2"} : (i64, i64) -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: %23 = "neura.load"(%22) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE-NEXT: %24 = "neura.fmul_fadd"(%21, %23, %20) : (f64, f64, f64) -> f64 +// BEFORE_CANONICALIZE-NEXT: "neura.store"(%24, %19) : (f64, !llvm.ptr) -> () +// BEFORE_CANONICALIZE-NEXT: %25 = "neura.load"(%16) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE-NEXT: %26 = "neura.load"(%22) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE-NEXT: %27 = "neura.gep"(%18) <{operandSegmentSizes = array}> {lhs_value = "%arg5"} : (i64) -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: %28 = "neura.load"(%27) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE-NEXT: %29 = "neura.fmul_fadd"(%26, %28, %25) : (f64, f64, f64) -> f64 +// BEFORE_CANONICALIZE-NEXT: "neura.store"(%29, %16) : (f64, !llvm.ptr) -> () +// BEFORE_CANONICALIZE-NEXT: %30 = "neura.add"(%18) {rhs_value = 1 : i64} : (i64) -> i64 +// BEFORE_CANONICALIZE-NEXT: %31 = "neura.icmp"(%30, %14) <{cmpType = "eq"}> : (i64, i64) -> i1 +// BEFORE_CANONICALIZE-NEXT: neura.cond_br %31 : i1 then to ^bb7 else %30 : i64 to ^bb6 +// BEFORE_CANONICALIZE-NEXT: ^bb7: // pred: ^bb6 +// BEFORE_CANONICALIZE-NEXT: %32 = "neura.add"(%15) {rhs_value = 1 : i64} : (i64) -> i64 +// BEFORE_CANONICALIZE-NEXT: %33 = "neura.icmp"(%32, %13) <{cmpType = "eq"}> : (i64, i64) -> i1 +// BEFORE_CANONICALIZE-NEXT: neura.cond_br %33 : i1 then to ^bb8 else %32 : i64 to ^bb5 +// BEFORE_CANONICALIZE-NEXT: ^bb8: // 4 preds: ^bb1, ^bb2, ^bb3, ^bb7 +// BEFORE_CANONICALIZE-NEXT: "neura.return"() : () -> () +// BEFORE_CANONICALIZE-NEXT: } +// BEFORE_CANONICALIZE-NEXT: } -// AFTER_CANONICALIZE: func.func @kernel -// AFTER_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 +// AFTER_CANONICALIZE: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, i64 = dense<64> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, f80 = dense<128> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, i32 = dense<32> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// AFTER_CANONICALIZE-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// AFTER_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 // AFTER_CANONICALIZE-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 // AFTER_CANONICALIZE-NEXT: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr // AFTER_CANONICALIZE-NEXT: %3 = "neura.constant"() <{value = "%arg4"}> : () -> !llvm.ptr @@ -158,251 +161,254 @@ // AFTER_CANONICALIZE-NEXT: neura.cond_br %60 : i1 then to ^bb8 else %59, %57, %58, %56 : i64, i64, i64, i64 to ^bb5 // AFTER_CANONICALIZE-NEXT: ^bb8: // 4 preds: ^bb1, ^bb2, ^bb3, ^bb7 // AFTER_CANONICALIZE-NEXT: "neura.return"() : () -> () +// AFTER_CANONICALIZE-NEXT: } +// AFTER_CANONICALIZE-NEXT: } -// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 12 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = "%arg1"}> {dfg_id = 2 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %3 = "neura.grant_once"() <{constant_value = "%arg3"}> {dfg_id = 3 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %4 = "neura.grant_once"() <{constant_value = "%arg4"}> {dfg_id = 4 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 3 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %5 = "neura.grant_once"() <{constant_value = 0 : i8}> {dfg_id = 5 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %6 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 6 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %7 = "neura.data_mov"(%1) {dfg_id = 20 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %8 = "neura.icmp"(%7) <{cmpType = "sgt"}> {dfg_id = 28 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 29 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 30 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 19 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 36 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 42 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%3) {dfg_id = 23 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 35 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 163 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 163 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 163 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 163 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 163 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 163 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 163 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 163 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 163 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 41 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%5) {dfg_id = 25 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.data_mov"(%10) {dfg_id = 34 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 2 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 24 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 290 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 290 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 290 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 290 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 290 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 290 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %19 = neura.grant_predicate %17, %18 {dfg_id = 40 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %20 = "neura.data_mov"(%2) {dfg_id = 21 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = "neura.data_mov"(%10) {dfg_id = 33 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %22 = neura.grant_predicate %20, %21 {dfg_id = 39 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %23 = "neura.data_mov"(%6) {dfg_id = 27 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 29 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%10) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = neura.grant_predicate %23, %24 {dfg_id = 38 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%10) {dfg_id = 31 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 37 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%2) {dfg_id = 22 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 45 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 55 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 24 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 44 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 26 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 54 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%5) {dfg_id = 26 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.data_mov"(%27) {dfg_id = 43 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 8001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 53 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %38 = "neura.icmp"(%37) <{cmpType = "sgt"}> {dfg_id = 67 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %39 = "neura.data_mov"(%38) {dfg_id = 76 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %40 = "neura.not"(%39) {dfg_id = 87 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %41 = "neura.data_mov"(%40) {dfg_id = 97 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %42 = "neura.data_mov"(%40) {dfg_id = 98 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %43 = neura.grant_predicate %41, %42 {dfg_id = 108 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %44 = "neura.data_mov"(%30) {dfg_id = 60 : i32, mapping_locs = [{id = 1001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %45 = "neura.data_mov"(%38) {dfg_id = 75 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %46 = neura.grant_predicate %44, %45 {dfg_id = 86 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %47 = "neura.data_mov"(%33) {dfg_id = 59 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 12000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %48 = "neura.data_mov"(%38) {dfg_id = 74 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 26 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %49 = neura.grant_predicate %47, %48 {dfg_id = 85 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %50 = "neura.data_mov"(%36) {dfg_id = 58 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %51 = "neura.data_mov"(%38) {dfg_id = 73 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 290 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %52 = neura.grant_predicate %50, %51 {dfg_id = 84 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %53 = "neura.data_mov"(%46) {dfg_id = 96 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %54 = neura.zext %53 {dfg_id = 107 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %55 = "neura.data_mov"(%54) {dfg_id = 116 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %56 = "neura.shl"(%55) {dfg_id = 132 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %57 = "neura.data_mov"(%49) {dfg_id = 95 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 42 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 289 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%52) {dfg_id = 94 : i32, mapping_locs = [{id = 290 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 290 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 290 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %59 = "neura.data_mov"(%56) {dfg_id = 143 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 291 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.memset"(%57, %58, %59) <{is_volatile = false}> {dfg_id = 162 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () -// MAPPING-NEXT: %60 = "neura.data_mov"(%56) {dfg_id = 142 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %60 : !neura.data {dfg_id = 161 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 0 : i32}]} -// MAPPING-NEXT: %61 = "neura.data_mov"(%13) {dfg_id = 52 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %62 = neura.zext %61 {dfg_id = 57 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %63 = "neura.data_mov"(%62) {dfg_id = 66 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %64 = "neura.shl"(%63) {dfg_id = 72 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %65 = "neura.data_mov"(%16) {dfg_id = 50 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%19) {dfg_id = 49 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.data_mov"(%64) {dfg_id = 83 : i32, mapping_locs = [{id = 4003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.memset"(%65, %66, %67) <{is_volatile = false}> {dfg_id = 93 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () -// MAPPING-NEXT: %68 = "neura.data_mov"(%22) {dfg_id = 48 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %69 = "neura.icmp"(%68) <{cmpType = "sgt"}> {dfg_id = 56 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 65 : i32, mapping_locs = [{id = 2002 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 1002 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 1002 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 1002 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 1002 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 1002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %71 = "neura.not"(%70) {dfg_id = 71 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.data_mov"(%22) {dfg_id = 47 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 2001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 2001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %73 = "neura.data_mov"(%69) {dfg_id = 64 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %74 = neura.grant_predicate %72, %73 {dfg_id = 70 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %75 = "neura.data_mov"(%13) {dfg_id = 51 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %76 = "neura.data_mov"(%69) {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %77 = neura.grant_predicate %75, %76 {dfg_id = 69 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %78 = "neura.data_mov"(%25) {dfg_id = 46 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %79 = "neura.data_mov"(%69) {dfg_id = 62 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = neura.grant_predicate %78, %79 {dfg_id = 68 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%71) {dfg_id = 81 : i32, mapping_locs = [{id = 1002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 1002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.data_mov"(%71) {dfg_id = 82 : i32, mapping_locs = [{id = 1003 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 1003 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = neura.grant_predicate %81, %82 {dfg_id = 92 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %84 = "neura.data_mov"(%74) {dfg_id = 80 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %85 = neura.zext %84 {dfg_id = 91 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%77) {dfg_id = 79 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %87 = neura.zext %86 {dfg_id = 90 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, i64 = dense<64> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, f80 = dense<128> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, i32 = dense<32> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// MAPPING-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 16 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = "%arg1"}> {dfg_id = 2 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %3 = "neura.grant_once"() <{constant_value = "%arg3"}> {dfg_id = 3 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 3 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %4 = "neura.grant_once"() <{constant_value = "%arg4"}> {dfg_id = 4 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %5 = "neura.grant_once"() <{constant_value = 0 : i8}> {dfg_id = 5 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %6 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 6 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %7 = "neura.data_mov"(%1) {dfg_id = 20 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %8 = "neura.icmp"(%7) <{cmpType = "sgt"}> {dfg_id = 28 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 29 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 30 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 19 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 36 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 42 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%3) {dfg_id = 23 : i32, mapping_locs = [{id = 424 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 35 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 432 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 432 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 432 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 432 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 432 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 432 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 432 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 432 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 432 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 432 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 432 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 41 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%5) {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.data_mov"(%10) {dfg_id = 34 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 184 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 4 : i32}, {id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 184 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 6 : i32}, {id = 184 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 7 : i32}, {id = 184 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 184 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 184 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 184 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 184 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 184 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = neura.grant_predicate %17, %18 {dfg_id = 40 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %20 = "neura.data_mov"(%2) {dfg_id = 21 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = "neura.data_mov"(%10) {dfg_id = 33 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %22 = neura.grant_predicate %20, %21 {dfg_id = 39 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %23 = "neura.data_mov"(%6) {dfg_id = 27 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 7 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%10) {dfg_id = 32 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = neura.grant_predicate %23, %24 {dfg_id = 38 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%10) {dfg_id = 31 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 37 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%2) {dfg_id = 22 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 8008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 45 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 55 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 24 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 44 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 54 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%5) {dfg_id = 26 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.data_mov"(%27) {dfg_id = 43 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 33 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 19 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 2008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 53 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %38 = "neura.icmp"(%37) <{cmpType = "sgt"}> {dfg_id = 67 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %39 = "neura.data_mov"(%38) {dfg_id = 76 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %40 = "neura.not"(%39) {dfg_id = 87 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %41 = "neura.data_mov"(%40) {dfg_id = 97 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %42 = "neura.data_mov"(%40) {dfg_id = 98 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %43 = neura.grant_predicate %41, %42 {dfg_id = 108 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %44 = "neura.data_mov"(%30) {dfg_id = 60 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 8008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 8008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %45 = "neura.data_mov"(%38) {dfg_id = 75 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 8000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 8000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %46 = neura.grant_predicate %44, %45 {dfg_id = 86 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %47 = "neura.data_mov"(%33) {dfg_id = 59 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 29 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %48 = "neura.data_mov"(%38) {dfg_id = 74 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 10 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 176 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %49 = neura.grant_predicate %47, %48 {dfg_id = 85 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %50 = "neura.data_mov"(%36) {dfg_id = 58 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %51 = "neura.data_mov"(%38) {dfg_id = 73 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 14 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 192 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %52 = neura.grant_predicate %50, %51 {dfg_id = 84 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %53 = "neura.data_mov"(%46) {dfg_id = 96 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %54 = neura.zext %53 {dfg_id = 107 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %55 = "neura.data_mov"(%54) {dfg_id = 116 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %56 = "neura.shl"(%55) {dfg_id = 132 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %57 = "neura.data_mov"(%49) {dfg_id = 95 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%52) {dfg_id = 94 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 176 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %59 = "neura.data_mov"(%56) {dfg_id = 143 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.memset"(%57, %58, %59) <{is_volatile = false}> {dfg_id = 162 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () +// MAPPING-NEXT: %60 = "neura.data_mov"(%56) {dfg_id = 142 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %60 : !neura.data {dfg_id = 161 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} +// MAPPING-NEXT: %61 = "neura.data_mov"(%13) {dfg_id = 52 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 1008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 1008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %62 = neura.zext %61 {dfg_id = 57 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %63 = "neura.data_mov"(%62) {dfg_id = 66 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %64 = "neura.shl"(%63) {dfg_id = 72 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %65 = "neura.data_mov"(%16) {dfg_id = 50 : i32, mapping_locs = [{id = 41 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 44 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 47 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 36 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%19) {dfg_id = 49 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 18 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 224 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.data_mov"(%64) {dfg_id = 83 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 232 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 232 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.memset"(%65, %66, %67) <{is_volatile = false}> {dfg_id = 93 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () +// MAPPING-NEXT: %68 = "neura.data_mov"(%22) {dfg_id = 48 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %69 = "neura.icmp"(%68) <{cmpType = "sgt"}> {dfg_id = 56 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 2 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 65 : i32, mapping_locs = [{id = 8024 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 26 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 12008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 12008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 12008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 12008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 12008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %71 = "neura.not"(%70) {dfg_id = 71 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.data_mov"(%22) {dfg_id = 47 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 12000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 12000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %73 = "neura.data_mov"(%69) {dfg_id = 64 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 12008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %74 = neura.grant_predicate %72, %73 {dfg_id = 70 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %75 = "neura.data_mov"(%13) {dfg_id = 51 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %76 = "neura.data_mov"(%69) {dfg_id = 63 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %77 = neura.grant_predicate %75, %76 {dfg_id = 69 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %78 = "neura.data_mov"(%25) {dfg_id = 46 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %79 = "neura.data_mov"(%69) {dfg_id = 62 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = neura.grant_predicate %78, %79 {dfg_id = 68 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%71) {dfg_id = 81 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.data_mov"(%71) {dfg_id = 82 : i32, mapping_locs = [{id = 12008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = neura.grant_predicate %81, %82 {dfg_id = 92 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %84 = "neura.data_mov"(%74) {dfg_id = 80 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %85 = neura.zext %84 {dfg_id = 91 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%77) {dfg_id = 79 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %87 = neura.zext %86 {dfg_id = 90 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data // MAPPING-NEXT: %88 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %89 = "neura.data_mov"(%85) {dfg_id = 105 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %90 = neura.phi_start %89, %88 {dfg_id = 115 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %89 = "neura.data_mov"(%85) {dfg_id = 105 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %90 = neura.phi_start %89, %88 {dfg_id = 115 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %91 = neura.reserve {dfg_id = 8 : i32} : !neura.data -// MAPPING-NEXT: %92 = "neura.data_mov"(%87) {dfg_id = 104 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %93 = neura.phi_start %92, %91 {dfg_id = 114 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %92 = "neura.data_mov"(%87) {dfg_id = 104 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %93 = neura.phi_start %92, %91 {dfg_id = 114 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %94 = neura.reserve {dfg_id = 9 : i32} : !neura.data -// MAPPING-NEXT: %95 = "neura.data_mov"(%80) {dfg_id = 78 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %96 = neura.phi_start %95, %94 {dfg_id = 89 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %95 = "neura.data_mov"(%80) {dfg_id = 78 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %96 = neura.phi_start %95, %94 {dfg_id = 89 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %97 = neura.reserve {dfg_id = 10 : i32} : !neura.data -// MAPPING-NEXT: %98 = "neura.data_mov"(%80) {dfg_id = 77 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %99 = neura.phi_start %98, %97 {dfg_id = 88 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 101 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 321 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 321 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 111 : i32, lhs_value = "%arg4", mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 123 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 449 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 43 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 40 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%102) {dfg_id = 135 : i32, lhs_value = 0.000000e+00 : f64, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> () -// MAPPING-NEXT: %103 = "neura.data_mov"(%99) {dfg_id = 100 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 448 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 448 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %104 = "neura.gep"(%103) <{operandSegmentSizes = array}> {dfg_id = 110 : i32, lhs_value = "%arg6", mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %98 = "neura.data_mov"(%80) {dfg_id = 77 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %99 = neura.phi_start %98, %97 {dfg_id = 88 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 101 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 111 : i32, lhs_value = "%arg4", mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 123 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 3 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 2008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 2008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%102) {dfg_id = 135 : i32, lhs_value = 0.000000e+00 : f64, mapping_locs = [{id = 2 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> () +// MAPPING-NEXT: %103 = "neura.data_mov"(%99) {dfg_id = 100 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 176 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 176 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %104 = "neura.gep"(%103) <{operandSegmentSizes = array}> {dfg_id = 110 : i32, lhs_value = "%arg6", mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %105 = neura.reserve {dfg_id = 11 : i32} : !neura.data -// MAPPING-NEXT: %106 = "neura.data_mov"(%96) {dfg_id = 103 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 195 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 195 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 195 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 195 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 195 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %107 = neura.phi_start %106, %105 {dfg_id = 113 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %106 = "neura.data_mov"(%96) {dfg_id = 103 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 192 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %107 = neura.phi_start %106, %105 {dfg_id = 113 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %108 = neura.reserve {dfg_id = 12 : i32} : !neura.data -// MAPPING-NEXT: %109 = "neura.data_mov"(%90) {dfg_id = 131 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %110 = neura.phi_start %109, %108 {dfg_id = 141 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %109 = "neura.data_mov"(%90) {dfg_id = 131 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %110 = neura.phi_start %109, %108 {dfg_id = 141 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %111 = neura.reserve {dfg_id = 13 : i32} : !neura.data -// MAPPING-NEXT: %112 = "neura.data_mov"(%93) {dfg_id = 130 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %113 = neura.phi_start %112, %111 {dfg_id = 140 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %112 = "neura.data_mov"(%93) {dfg_id = 130 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %113 = neura.phi_start %112, %111 {dfg_id = 140 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %114 = neura.reserve {dfg_id = 14 : i32} : !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%101) {dfg_id = 122 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = neura.phi_start %115, %114 {dfg_id = 134 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%101) {dfg_id = 122 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = neura.phi_start %115, %114 {dfg_id = 134 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %117 = neura.reserve {dfg_id = 15 : i32} : !neura.data -// MAPPING-NEXT: %118 = "neura.data_mov"(%99) {dfg_id = 99 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %119 = neura.phi_start %118, %117 {dfg_id = 109 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %118 = "neura.data_mov"(%99) {dfg_id = 99 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %119 = neura.phi_start %118, %117 {dfg_id = 109 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %120 = neura.reserve {dfg_id = 16 : i32} : !neura.data -// MAPPING-NEXT: %121 = "neura.data_mov"(%104) {dfg_id = 121 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %122 = neura.phi_start %121, %120 {dfg_id = 133 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %121 = "neura.data_mov"(%104) {dfg_id = 121 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %122 = neura.phi_start %121, %120 {dfg_id = 133 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %123 = neura.reserve {dfg_id = 17 : i32} : !neura.data -// MAPPING-NEXT: %124 = "neura.data_mov"(%96) {dfg_id = 102 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %125 = neura.phi_start %124, %123 {dfg_id = 112 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 127 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 18 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 224 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %127 = "neura.gep"(%126) <{operandSegmentSizes = array}> {dfg_id = 139 : i32, lhs_value = "%arg3", mapping_locs = [{id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %128 = "neura.data_mov"(%127) {dfg_id = 155 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %129 = "neura.load"(%128) {dfg_id = 168 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %130 = "neura.data_mov"(%122) {dfg_id = 145 : i32, mapping_locs = [{id = 43 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 40 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 163 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %132 = "neura.data_mov"(%119) {dfg_id = 120 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 352 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 352 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %133 = "neura.data_mov"(%125) {dfg_id = 126 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 23 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 353 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %134 = "neura.gep"(%132, %133) <{operandSegmentSizes = array}> {dfg_id = 138 : i32, lhs_value = "%arg2", mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %135 = "neura.data_mov"(%134) {dfg_id = 153 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 22 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 3001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 3001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %136 = "neura.load"(%135) {dfg_id = 167 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %137 = "neura.data_mov"(%131) {dfg_id = 170 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 41 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 44 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 47 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %138 = "neura.data_mov"(%136) {dfg_id = 174 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 23 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %139 = "neura.data_mov"(%129) {dfg_id = 175 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 23 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 352 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 352 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 352 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %140 = "neura.fmul_fadd"(%137, %138, %139) {dfg_id = 182 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %141 = "neura.data_mov"(%140) {dfg_id = 189 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 22 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %142 = "neura.data_mov"(%127) {dfg_id = 154 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 18 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 22 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 3000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 3000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 3000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%141, %142) {dfg_id = 203 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %143 = "neura.data_mov"(%116) {dfg_id = 148 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 164 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %145 = "neura.data_mov"(%134) {dfg_id = 152 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 31 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 27 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %146 = "neura.load"(%145) {dfg_id = 166 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %147 = "neura.data_mov"(%125) {dfg_id = 125 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 137 : i32, lhs_value = "%arg5", mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 151 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 165 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %151 = "neura.data_mov"(%146) {dfg_id = 173 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %152 = "neura.data_mov"(%150) {dfg_id = 172 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 8001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %153 = "neura.data_mov"(%144) {dfg_id = 171 : i32, mapping_locs = [{id = 8002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 8002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %154 = "neura.fmul_fadd"(%151, %152, %153) {dfg_id = 181 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %155 = "neura.data_mov"(%154) {dfg_id = 188 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %156 = "neura.data_mov"(%116) {dfg_id = 147 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 8003 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 8003 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 8003 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%155, %156) {dfg_id = 202 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %157 = "neura.data_mov"(%125) {dfg_id = 124 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %158 = "neura.add"(%157) {dfg_id = 136 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %159 = "neura.data_mov"(%158) {dfg_id = 150 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %160 = "neura.data_mov"(%113) {dfg_id = 158 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %161 = "neura.icmp"(%159, %160) <{cmpType = "eq"}> {dfg_id = 169 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %162 = "neura.data_mov"(%161) {dfg_id = 180 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %163 = "neura.not"(%162) {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %164 = "neura.data_mov"(%158) {dfg_id = 149 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 194 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 194 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %165 = "neura.data_mov"(%163) {dfg_id = 201 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %166 = neura.grant_predicate %164, %165 {dfg_id = 211 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %166 -> %123 {dfg_id = 220 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %167 = "neura.data_mov"(%122) {dfg_id = 144 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 448 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 448 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 448 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 448 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %168 = "neura.data_mov"(%163) {dfg_id = 200 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 17 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 28 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 34 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %169 = neura.grant_predicate %167, %168 {dfg_id = 210 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %169 -> %120 {dfg_id = 219 : i32, mapping_locs = [{id = 449 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 449 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 449 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 449 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 449 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 449 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 449 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %170 = "neura.data_mov"(%119) {dfg_id = 119 : i32, mapping_locs = [{id = 325 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 9 : i32}, {id = 325 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 10 : i32}, {id = 325 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 11 : i32}, {id = 325 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 12 : i32}, {id = 325 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 13 : i32}, {id = 325 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 14 : i32}, {id = 325 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 15 : i32}, {id = 325 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 16 : i32}, {id = 325 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 17 : i32}, {id = 325 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %171 = "neura.data_mov"(%163) {dfg_id = 199 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 21 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 326 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 15 : i32}, {id = 326 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 16 : i32}, {id = 326 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 17 : i32}, {id = 326 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %172 = neura.grant_predicate %170, %171 {dfg_id = 209 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %172 -> %117 {dfg_id = 218 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 322 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %173 = "neura.data_mov"(%116) {dfg_id = 146 : i32, mapping_locs = [{id = 291 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 291 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 291 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 291 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 291 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %174 = "neura.data_mov"(%163) {dfg_id = 198 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %175 = neura.grant_predicate %173, %174 {dfg_id = 208 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %175 -> %114 {dfg_id = 217 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %176 = "neura.data_mov"(%113) {dfg_id = 157 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %177 = "neura.data_mov"(%163) {dfg_id = 197 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %178 = neura.grant_predicate %176, %177 {dfg_id = 207 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %178 -> %111 {dfg_id = 216 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %179 = "neura.data_mov"(%110) {dfg_id = 160 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 199 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 11 : i32}, {id = 199 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 12 : i32}, {id = 199 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 13 : i32}, {id = 199 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 14 : i32}, {id = 199 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 15 : i32}, {id = 199 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 16 : i32}, {id = 199 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %180 = "neura.data_mov"(%163) {dfg_id = 196 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %181 = neura.grant_predicate %179, %180 {dfg_id = 206 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %181 -> %108 {dfg_id = 215 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 2001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 2001 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %182 = "neura.data_mov"(%107) {dfg_id = 129 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 195 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 195 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %183 = "neura.data_mov"(%163) {dfg_id = 195 : i32, mapping_locs = [{id = 197 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 12 : i32}, {id = 197 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 13 : i32}, {id = 197 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 14 : i32}, {id = 197 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 15 : i32}, {id = 197 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %184 = neura.grant_predicate %182, %183 {dfg_id = 205 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %184 -> %105 {dfg_id = 214 : i32, mapping_locs = [{id = 198 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 17 : i32}, {id = 198 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 18 : i32}, {id = 198 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 19 : i32}, {id = 198 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 20 : i32}, {id = 198 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 21 : i32}, {id = 198 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 22 : i32}, {id = 198 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 23 : i32}, {id = 198 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 24 : i32}, {id = 198 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %185 = "neura.data_mov"(%119) {dfg_id = 118 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %186 = "neura.data_mov"(%161) {dfg_id = 179 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %187 = neura.grant_predicate %185, %186 {dfg_id = 186 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %188 = "neura.data_mov"(%110) {dfg_id = 159 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 2000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %189 = "neura.data_mov"(%161) {dfg_id = 178 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %190 = neura.grant_predicate %188, %189 {dfg_id = 185 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %191 = "neura.data_mov"(%107) {dfg_id = 128 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %192 = "neura.data_mov"(%161) {dfg_id = 177 : i32, mapping_locs = [{id = 196 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 196 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 196 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 196 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %193 = neura.grant_predicate %191, %192 {dfg_id = 184 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %194 = "neura.data_mov"(%113) {dfg_id = 156 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %195 = "neura.data_mov"(%161) {dfg_id = 176 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %196 = neura.grant_predicate %194, %195 {dfg_id = 183 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %197 = "neura.data_mov"(%187) {dfg_id = 194 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %198 = "neura.add"(%197) {dfg_id = 204 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %199 = "neura.data_mov"(%198) {dfg_id = 213 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %200 = "neura.data_mov"(%190) {dfg_id = 193 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 20 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %201 = "neura.icmp"(%199, %200) <{cmpType = "eq"}> {dfg_id = 221 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %202 = "neura.data_mov"(%201) {dfg_id = 224 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %203 = "neura.not"(%202) {dfg_id = 226 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %204 = "neura.data_mov"(%198) {dfg_id = 212 : i32, mapping_locs = [{id = 323 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 323 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 323 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 323 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %205 = "neura.data_mov"(%203) {dfg_id = 231 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %206 = neura.grant_predicate %204, %205 {dfg_id = 236 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %206 -> %97 {dfg_id = 241 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %207 = "neura.data_mov"(%193) {dfg_id = 191 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %208 = "neura.data_mov"(%203) {dfg_id = 230 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 36 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = neura.grant_predicate %207, %208 {dfg_id = 235 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %209 -> %94 {dfg_id = 240 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 194 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 194 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %210 = "neura.data_mov"(%196) {dfg_id = 190 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %211 = "neura.data_mov"(%203) {dfg_id = 229 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %212 = neura.grant_predicate %210, %211 {dfg_id = 234 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %212 -> %91 {dfg_id = 239 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 162 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 162 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 162 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %213 = "neura.data_mov"(%190) {dfg_id = 192 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 194 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 194 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %214 = "neura.data_mov"(%203) {dfg_id = 228 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %215 = neura.grant_predicate %213, %214 {dfg_id = 233 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %215 -> %88 {dfg_id = 238 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 2003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 2003 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 2003 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 2003 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %216 = "neura.data_mov"(%201) {dfg_id = 222 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %217 = "neura.data_mov"(%201) {dfg_id = 223 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 322 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %218 = neura.grant_predicate %216, %217 {dfg_id = 225 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %219 = "neura.data_mov"(%83) {dfg_id = 106 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 20 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 321 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %220 = "neura.data_mov"(%43) {dfg_id = 117 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 20 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 322 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 322 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %221 = "neura.data_mov"(%218) {dfg_id = 227 : i32, mapping_locs = [{id = 324 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}, {id = 324 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %222 = "neura.phi"(%219, %220, %221) {dfg_id = 232 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %223 = "neura.data_mov"(%222) {dfg_id = 237 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %223 : !neura.data {dfg_id = 242 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 2 : i32}]} +// MAPPING-NEXT: %124 = "neura.data_mov"(%96) {dfg_id = 102 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %125 = neura.phi_start %124, %123 {dfg_id = 112 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 127 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %127 = "neura.gep"(%126) <{operandSegmentSizes = array}> {dfg_id = 139 : i32, lhs_value = "%arg3", mapping_locs = [{id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %128 = "neura.data_mov"(%127) {dfg_id = 155 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 1000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %129 = "neura.load"(%128) {dfg_id = 168 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %130 = "neura.data_mov"(%122) {dfg_id = 145 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 2000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 163 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %132 = "neura.data_mov"(%119) {dfg_id = 120 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %133 = "neura.data_mov"(%125) {dfg_id = 126 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %134 = "neura.gep"(%132, %133) <{operandSegmentSizes = array}> {dfg_id = 138 : i32, lhs_value = "%arg2", mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %135 = "neura.data_mov"(%134) {dfg_id = 153 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %136 = "neura.load"(%135) {dfg_id = 167 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %137 = "neura.data_mov"(%131) {dfg_id = 170 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %138 = "neura.data_mov"(%136) {dfg_id = 174 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %139 = "neura.data_mov"(%129) {dfg_id = 175 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 1000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %140 = "neura.fmul_fadd"(%137, %138, %139) {dfg_id = 182 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %141 = "neura.data_mov"(%140) {dfg_id = 189 : i32, mapping_locs = [{id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %142 = "neura.data_mov"(%127) {dfg_id = 154 : i32, mapping_locs = [{id = 1016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 1016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 1016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 1016 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 1016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%141, %142) {dfg_id = 203 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %143 = "neura.data_mov"(%116) {dfg_id = 148 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 164 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %145 = "neura.data_mov"(%134) {dfg_id = 152 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %146 = "neura.load"(%145) {dfg_id = 166 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %147 = "neura.data_mov"(%125) {dfg_id = 125 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 18 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 224 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 137 : i32, lhs_value = "%arg5", mapping_locs = [{id = 7 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 151 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 165 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %151 = "neura.data_mov"(%146) {dfg_id = 173 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 0 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %152 = "neura.data_mov"(%150) {dfg_id = 172 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 2 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %153 = "neura.data_mov"(%144) {dfg_id = 171 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %154 = "neura.fmul_fadd"(%151, %152, %153) {dfg_id = 181 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %155 = "neura.data_mov"(%154) {dfg_id = 188 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %156 = "neura.data_mov"(%116) {dfg_id = 147 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 11 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%155, %156) {dfg_id = 202 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %157 = "neura.data_mov"(%125) {dfg_id = 124 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %158 = "neura.add"(%157) {dfg_id = 136 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %159 = "neura.data_mov"(%158) {dfg_id = 150 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %160 = "neura.data_mov"(%113) {dfg_id = 158 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %161 = "neura.icmp"(%159, %160) <{cmpType = "eq"}> {dfg_id = 169 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %162 = "neura.data_mov"(%161) {dfg_id = 180 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %163 = "neura.not"(%162) {dfg_id = 187 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %164 = "neura.data_mov"(%158) {dfg_id = 149 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %165 = "neura.data_mov"(%163) {dfg_id = 201 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %166 = neura.grant_predicate %164, %165 {dfg_id = 211 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %166 -> %123 {dfg_id = 220 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %167 = "neura.data_mov"(%122) {dfg_id = 144 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 336 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 336 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %168 = "neura.data_mov"(%163) {dfg_id = 200 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %169 = neura.grant_predicate %167, %168 {dfg_id = 210 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %169 -> %120 {dfg_id = 219 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 208 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 208 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 208 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 208 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 208 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 208 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 208 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 208 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 208 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}, {id = 208 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %170 = "neura.data_mov"(%119) {dfg_id = 119 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 10 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 184 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 184 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 184 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %171 = "neura.data_mov"(%163) {dfg_id = 199 : i32, mapping_locs = [{id = 312 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 30 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 42 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 29 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %172 = neura.grant_predicate %170, %171 {dfg_id = 209 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %172 -> %117 {dfg_id = 218 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 4016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 4016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 4016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 4016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 4016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 4016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %173 = "neura.data_mov"(%116) {dfg_id = 146 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 8024 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 8024 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %174 = "neura.data_mov"(%163) {dfg_id = 198 : i32, mapping_locs = [{id = 304 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 27 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %175 = neura.grant_predicate %173, %174 {dfg_id = 208 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %175 -> %114 {dfg_id = 217 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 4024 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}, {id = 4024 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 4024 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 4024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 4024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}, {id = 4024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 4024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 4024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 4024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 4024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}, {id = 4024 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 26 : i32}, {id = 4024 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %176 = "neura.data_mov"(%113) {dfg_id = 157 : i32, mapping_locs = [{id = 8016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 8016 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 8016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 8016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %177 = "neura.data_mov"(%163) {dfg_id = 197 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %178 = neura.grant_predicate %176, %177 {dfg_id = 207 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %178 -> %111 {dfg_id = 216 : i32, mapping_locs = [{id = 8016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 8016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 8016 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 8016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 8016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 8016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 8016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 8016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 8016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 8016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 8016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 8016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %179 = "neura.data_mov"(%110) {dfg_id = 160 : i32, mapping_locs = [{id = 12016 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 12016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 12016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 12016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 12016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %180 = "neura.data_mov"(%163) {dfg_id = 196 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 40 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 12000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %181 = neura.grant_predicate %179, %180 {dfg_id = 206 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %181 -> %108 {dfg_id = 215 : i32, mapping_locs = [{id = 12024 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 12024 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}, {id = 12024 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 12024 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 12024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 12024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}, {id = 12024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 12024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 12024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 12024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 12024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %182 = "neura.data_mov"(%107) {dfg_id = 129 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %183 = "neura.data_mov"(%163) {dfg_id = 195 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 33 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 192 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %184 = neura.grant_predicate %182, %183 {dfg_id = 205 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %184 -> %105 {dfg_id = 214 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 200 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %185 = "neura.data_mov"(%119) {dfg_id = 118 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %186 = "neura.data_mov"(%161) {dfg_id = 179 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %187 = neura.grant_predicate %185, %186 {dfg_id = 186 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %188 = "neura.data_mov"(%110) {dfg_id = 159 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 416 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %189 = "neura.data_mov"(%161) {dfg_id = 178 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %190 = neura.grant_predicate %188, %189 {dfg_id = 185 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %191 = "neura.data_mov"(%107) {dfg_id = 128 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %192 = "neura.data_mov"(%161) {dfg_id = 177 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 328 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %193 = neura.grant_predicate %191, %192 {dfg_id = 184 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %194 = "neura.data_mov"(%113) {dfg_id = 156 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 8000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %195 = "neura.data_mov"(%161) {dfg_id = 176 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %196 = neura.grant_predicate %194, %195 {dfg_id = 183 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %197 = "neura.data_mov"(%187) {dfg_id = 194 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %198 = "neura.add"(%197) {dfg_id = 204 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %199 = "neura.data_mov"(%198) {dfg_id = 213 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %200 = "neura.data_mov"(%190) {dfg_id = 193 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %201 = "neura.icmp"(%199, %200) <{cmpType = "eq"}> {dfg_id = 221 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %202 = "neura.data_mov"(%201) {dfg_id = 224 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %203 = "neura.not"(%202) {dfg_id = 226 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %204 = "neura.data_mov"(%198) {dfg_id = 212 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 160 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %205 = "neura.data_mov"(%203) {dfg_id = 231 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %206 = neura.grant_predicate %204, %205 {dfg_id = 236 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %206 -> %97 {dfg_id = 241 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %207 = "neura.data_mov"(%193) {dfg_id = 191 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %208 = "neura.data_mov"(%203) {dfg_id = 230 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 28 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = neura.grant_predicate %207, %208 {dfg_id = 235 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %209 -> %94 {dfg_id = 240 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 17 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 176 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %210 = "neura.data_mov"(%196) {dfg_id = 190 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %211 = "neura.data_mov"(%203) {dfg_id = 229 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %212 = neura.grant_predicate %210, %211 {dfg_id = 234 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %212 -> %91 {dfg_id = 239 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 28 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 28 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 8024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 8024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %213 = "neura.data_mov"(%190) {dfg_id = 192 : i32, mapping_locs = [{id = 416 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 416 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 416 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %214 = "neura.data_mov"(%203) {dfg_id = 228 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %215 = neura.grant_predicate %213, %214 {dfg_id = 233 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %215 -> %88 {dfg_id = 238 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 12016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 12016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 12016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 12016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 12016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 12016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 12016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 12016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %216 = "neura.data_mov"(%201) {dfg_id = 222 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %217 = "neura.data_mov"(%201) {dfg_id = 223 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 27 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %218 = neura.grant_predicate %216, %217 {dfg_id = 225 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %219 = "neura.data_mov"(%83) {dfg_id = 106 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 8008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %220 = "neura.data_mov"(%43) {dfg_id = 117 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8024 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 8024 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %221 = "neura.data_mov"(%218) {dfg_id = 227 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %222 = "neura.phi"(%219, %220, %221) {dfg_id = 232 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %223 = "neura.data_mov"(%222) {dfg_id = 237 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %223 : !neura.data {dfg_id = 242 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 18 : i32} // MAPPING-NEXT: } // MAPPING-NEXT: } @@ -411,7 +417,7 @@ // YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 12 +// YAML-NEXT: compiled_ii: 10 // YAML-NEXT: cores: // YAML-NEXT: - column: 0 // YAML-NEXT: row: 0 @@ -421,2910 +427,528 @@ // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 1 +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 3 // YAML-NEXT: time_step: 0 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" +// YAML-NEXT: - operand: "#0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 740001 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SGT" -// YAML-NEXT: id: 28 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 19 // YAML-NEXT: time_step: 1 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 30 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 340000 +// YAML-NEXT: id: 34 // YAML-NEXT: time_step: 3 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 320000 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 350000 +// YAML-NEXT: id: 35 // YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 142 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 161 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 37 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 440000 -// YAML-NEXT: time_step: 10 +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 46 +// YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 71 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 86 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 92 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 330001 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "SHL" -// YAML-NEXT: id: 132 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 320001 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 350001 +// YAML-NEXT: id: 400001 // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 22 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 6 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 69 +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 47 // YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 7 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 90 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 65 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 28 // YAML-NEXT: time_step: 7 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 55 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "$24" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SGT" -// YAML-NEXT: id: 67 -// YAML-NEXT: time_step: 11 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 720001 +// YAML-NEXT: time_step: 7 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 185 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 76 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: id: 84 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: - index_per_ii: 8 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 87 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1920000 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: id: 730001 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: - index_per_ii: 9 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 108 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 21 -// YAML-NEXT: time_step: 3 +// YAML-NEXT: id: 92 +// YAML-NEXT: time_step: 9 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1060001 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 39 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 220001 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SGT" -// YAML-NEXT: id: 56 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 238 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 650000 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 70 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 215 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 91 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 115 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 141 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "3" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 168 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 2 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 153 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 220000 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 154 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 167 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 203 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "4" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 137 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 57 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 740002 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 165 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 36 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 42 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 340001 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 50 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SHL" -// YAML-NEXT: id: 72 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 49 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MEMSET" -// YAML-NEXT: id: 93 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 430001 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 440001 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 125 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 183 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 207 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 730001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 107 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 23 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2000001 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 41 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1430001 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 490001 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 32 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 510001 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 239 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 38 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 114 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 140 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1250001 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 187 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 211 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1540001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2000000 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1930001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 113 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1990002 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 192 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 184 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1170001 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 233 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1060002 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 205 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 62 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 206 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$7" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 240 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 68 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 89 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 112 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 136 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1270000 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 158 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 169 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 160 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$7" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 139 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1530001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1990001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1750001 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1540002 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 191 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 235 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1740001 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1890001 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1260001 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 127 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 5 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 440002 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 53 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 148 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 164 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 740003 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 147 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 166 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 172 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "FMUL_FADD" -// YAML-NEXT: id: 181 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 340002 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 202 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 134 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 3 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 25 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1470000 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 190 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 40 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 58 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 73 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1520002 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 84 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2000002 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 198 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 234 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 270002 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 208 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 95 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 143 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 34 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "MEMSET" -// YAML-NEXT: id: 162 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 186 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 204 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1520001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 221 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1980001 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 226 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 199 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 270001 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 225 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2000003 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 117 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 236 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 106 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI" -// YAML-NEXT: id: 232 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 209 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 88 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 109 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 111 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "11" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 138 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 6 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 175 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2300001 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "FMUL_FADD" -// YAML-NEXT: id: 182 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 242 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 120 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 126 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "12" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 4 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 54 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 163 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 85 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 123 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 135 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "13" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1450001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1230002 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1700001 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 950001 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "$24" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "14" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 133 -// YAML-NEXT: time_step: 12 +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 1310001 +// YAML-NEXT: time_step: 10 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 130 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1230001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: id: 69 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 6 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 64 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: - index_per_ii: 7 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1700002 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 65 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: - index_per_ii: 8 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 210 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: id: 78 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 9 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 100 +// YAML-NEXT: id: 55 // YAML-NEXT: time_step: 9 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 9 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 110 -// YAML-NEXT: time_step: 11 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 127 +// YAML-NEXT: time_step: 9 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "15" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "4" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1700003 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 20 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// ASM: # Compiled II: 12 +// ASM: # Compiled II: 10 // ASM: PE(0,0): // ASM-NEXT: { -// ASM-NEXT: CONSTANT, [arg0] -> [$0] (t=0, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [NORTH, RED], [$0], [$2], [EAST, RED], [$1] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$2] -> [NORTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [$0] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$1] -> [EAST, RED], [$0], [NORTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: NOT, [$2] -> [$2], [$3] (t=12, inv_iters=1) +// ASM-NEXT: GRANT_ONCE, [#0] -> [$0], [NORTH, RED] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [NORTH, RED] (t=13, inv_iters=1) +// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$16], [NORTH, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [EAST, RED] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=3, inv_iters=0) -// ASM-NEXT: SHL, [NORTH, RED], [#3] -> [NORTH, RED], [WEST, RED] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=5, inv_iters=0) +// ASM-NEXT: GEP, [$0] -> [EAST, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [EAST, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: GEP, [$8] -> [EAST, RED], [NORTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=7, inv_iters=0) +// ASM-NEXT: PHI_START, [$16], [$24] -> [$0], [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [WEST, RED] -> [$0], [$1] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [EAST, RED], [$0], [WEST, RED], [NORTH, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM: PE(2,0): +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$24] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [NORTH, RED], [$1] (t=12, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=12, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [WEST, RED] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0], [$1] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$1] -> [NORTH, RED] (t=13, inv_iters=1) +// ASM-NEXT: STORE, [NORTH, RED], [$0] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [$0], [$1] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$2], [$0], [WEST, RED], [NORTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$3] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$2] -> [WEST, RED] (t=6, inv_iters=0) +// ASM-NEXT: LOAD, [WEST, RED] -> [WEST, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$1] (t=19, inv_iters=1) +// ASM-NEXT: LOAD, [WEST, RED] -> [WEST, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$0] -> [EAST, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$3] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(2,0): // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [NORTH, RED], [$0] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(3,0): -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg1] -> [WEST, RED], [$0] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$1] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: STORE, [NORTH, RED], [$0] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [NORTH, RED] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) // ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [$0] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: ZEXT, [$1] -> [$2] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=13, inv_iters=1) +// ASM-NEXT: PHI_START, [SOUTH, RED], [EAST, RED] -> [$0], [NORTH, RED], [EAST, RED], [$8] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [NORTH, RED] (t=14, inv_iters=1) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$16] -> [$16], [$24], [SOUTH, RED], [$0] (t=2, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=3, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED], [$0] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$24] -> [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$24] (t=13, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [$1], [EAST, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=16, inv_iters=1) +// ASM-NEXT: PHI_START, [$8], [$24] -> [SOUTH, RED], [$0] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: SHL, [$2], [#3] -> [$3] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=17, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [EAST, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: MEMSET, [$0], [$2], [$3] (t=18, inv_iters=1) +// ASM-NEXT: GEP, [NORTH, RED], [$16] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: LOAD, [$0] -> [NORTH, RED], [$0] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: MUL, [SOUTH, RED], [$0] -> [NORTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=11, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: ADD, [SOUTH, RED], [NORTH, RED] -> [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) // ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [NORTH, RED] (t=12, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$24], [$0] -> [WEST, RED] (t=10, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [EAST, RED] -> [$1] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ZEXT, [SOUTH, RED] -> [SOUTH, RED] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=14, inv_iters=1) +// ASM-NEXT: SHL, [WEST, RED], [#5] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [WEST, RED] (t=12, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$3] -> [WEST, RED] (t=15, inv_iters=1) +// ASM-NEXT: GEP, [$0] -> [NORTH, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=16, inv_iters=1) +// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [WEST, RED], [SOUTH, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$2] (t=17, inv_iters=1) +// ASM-NEXT: NOT, [$0] -> [$8], [EAST, RED], [$24], [NORTH, RED], [$16], [WEST, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [EAST, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$3] (t=6, inv_iters=0) +// ASM-NEXT: ADD, [WEST, RED], [#1] -> [EAST, RED], [$24] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$24] -> [NORTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$2] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [EAST, RED], [$1], [$0] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0], [$1], [EAST, RED], [NORTH, RED], [WEST, RED], [$8], [$5] (t=12, inv_iters=1) +// ASM-NEXT: RETURN_VOID, [$0] (t=10, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [WEST, RED] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$0] -> [$1] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [EAST, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$1] -> [WEST, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$3], [$6] -> [$3], [$0] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$2] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$4] -> [EAST, RED] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [NORTH, RED] -> [SOUTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$3], [$5] -> [$6] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$7], [$8] -> [SOUTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$2] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$0] -> [$0], [NORTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [$8], [$16] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$2] -> [$3], [$0] (t=8, inv_iters=0) +// ASM-NEXT: NOT, [$0] -> [WEST, RED], [SOUTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [$1], [EAST, RED], [WEST, RED], [$0] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$2] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$1] -> [EAST, RED] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [$1] -> [$0], [NORTH, RED], [SOUTH, RED], [$4], [WEST, RED] (t=11, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$7] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) // ASM: PE(3,1): // ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [SOUTH, RED], [WEST, RED] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [WEST, RED] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: CONSTANT, [arg3] -> [NORTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) // ASM: PE(0,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED], [$0] (t=12, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=12, inv_iters=1) +// ASM-NEXT: STORE, [$0], [$8] (t=10, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [EAST, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$2] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=14, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: LOAD, [EAST, RED] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: FMUL_FADD, [$0], [$1], [$2] -> [$0] (t=16, inv_iters=1) +// ASM-NEXT: GEP, [$0] -> [EAST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=5, inv_iters=0) -// ASM-NEXT: STORE, [$0], [$3] (t=17, inv_iters=1) +// ASM-NEXT: GEP, [$8] -> [NORTH, RED], [$0] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM: PE(1,2): +// ASM-NEXT: PHI_START, [$0], [$16] -> [NORTH, RED], [$8], [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [WEST, RED], [$0], [$3] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: LOAD, [$0] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg3] -> [SOUTH, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: MUL, [$0], [SOUTH, RED] -> [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$2] -> [SOUTH, RED] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$2] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: ADD, [$0], [SOUTH, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(1,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$2] -> [$2] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: GRANT_PREDICATE, [$16], [$24] -> [$0] (t=10, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [SOUTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$8] -> [WEST, RED], [EAST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$3], [$1] -> [$0] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$3] (t=17, inv_iters=1) +// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [WEST, RED], [$16] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$2] (t=6, inv_iters=0) -// ASM-NEXT: MEMSET, [$1], [$2], [$3] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) -// ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [$0] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$3] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [SOUTH, RED] -> [$0], [$1], [$2] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0], [EAST, RED], [WEST, RED], [SOUTH, RED] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$6] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$24] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$1], [$2] -> [$4] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$2] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$3], [$0] -> [$0] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: PHI, [$1], [$2], [$4] -> [EAST, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$5], [$6] -> [$2] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [$1], [NORTH, RED], [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$2] -> [EAST, RED], [$5], [$0] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$1] -> [NORTH, RED], [WEST, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) // ASM: PE(3,2): // ASM-NEXT: { -// ASM-NEXT: GEP, [$0], [$1] -> [SOUTH, RED], [WEST, RED] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: CONSTANT, [#0] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: MEMSET, [SOUTH, RED], [$0], [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(0,3): // ASM-NEXT: { -// ASM-NEXT: FMUL_FADD, [NORTH, RED], [SOUTH, RED], [$0] -> [SOUTH, RED] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: LOAD, [SOUTH, RED] -> [SOUTH, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM: PE(0,3): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg4] -> [$0] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [$0] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [EAST, RED] -> [EAST, RED] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [EAST, RED] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(1,3): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(2,3): -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [WEST, RED], [$0] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [$1] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: STORE, [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [$0] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) // ASM: PE(3,3): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: CONSTANT, [#32] -> [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) // RUN: mlir-neura-opt %t-kernel.mlir --view-op-graph 2>&1 | sed -n '/^digraph G {/,/^}$/p' > bicg_kernel_original.dot @@ -3346,3 +970,302 @@ // RUN: FileCheck %s --input-file=bicg_kernel.dot -check-prefix=DOT // DOT: digraph G { +// DOT-NEXT: compound = true; +// DOT-NEXT: subgraph cluster_1 { +// DOT-NEXT: v2 [label = " ", shape = plain]; +// DOT-NEXT: label = "builtin.module : ()\n\ndlti.dl_spec: #dlti.dl_spec", shape = ellipse, style = filled]; +// DOT-NEXT: v64 [fillcolor = "0.571429 1.0 1.0", label = "neura.store : ()\n\nlhs_value: 0.000000e+00 : f64", shape = ellipse, style = filled]; +// DOT-NEXT: v65 [fillcolor = "0.523810 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; +// DOT-NEXT: v66 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v67 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v68 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v69 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v70 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v71 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v72 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v75 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v76 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v79 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v80 [fillcolor = "0.523810 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; +// DOT-NEXT: v81 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v82 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v83 [fillcolor = "0.523810 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; +// DOT-NEXT: v84 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v85 [fillcolor = "0.666667 1.0 1.0", label = "neura.fmul_fadd : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v86 [fillcolor = "0.571429 1.0 1.0", label = "neura.store : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v87 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v88 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v89 [fillcolor = "0.523810 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; +// DOT-NEXT: v90 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v91 [fillcolor = "0.666667 1.0 1.0", label = "neura.fmul_fadd : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v92 [fillcolor = "0.571429 1.0 1.0", label = "neura.store : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v93 [fillcolor = "0.714286 1.0 1.0", label = "neura.add : (!neura.data)\n\nrhs_value: 1 : i64", shape = ellipse, style = filled]; +// DOT-NEXT: v94 [fillcolor = "0.095238 1.0 1.0", label = "neura.icmp : (!neura.data)\n\ncmpType: \"eq\"", shape = ellipse, style = filled]; +// DOT-NEXT: v95 [fillcolor = "0.190476 1.0 1.0", label = "neura.not : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v96 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v97 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v98 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v101 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v102 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v105 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v106 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v107 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v108 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v109 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v110 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v111 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v112 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v113 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v114 [fillcolor = "0.714286 1.0 1.0", label = "neura.add : (!neura.data)\n\nrhs_value: 1 : i64", shape = ellipse, style = filled]; +// DOT-NEXT: v115 [fillcolor = "0.095238 1.0 1.0", label = "neura.icmp : (!neura.data)\n\ncmpType: \"eq\"", shape = ellipse, style = filled]; +// DOT-NEXT: v116 [fillcolor = "0.190476 1.0 1.0", label = "neura.not : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v117 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v118 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v119 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v120 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v121 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v122 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v123 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v124 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v125 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v126 [fillcolor = "0.809524 1.0 1.0", label = "neura.phi : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v127 [fillcolor = "0.380952 1.0 1.0", label = "neura.return_void : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v128 [fillcolor = "0.857143 1.0 1.0", label = "neura.yield : ()\n\noperandSegmentSizes: array", shape = ellipse, style = filled]; +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: v17 -> v23 [label = "", style = solid]; +// DOT-NEXT: v23 -> v24 [label = "", style = solid]; +// DOT-NEXT: v16 -> v25 [label = "0", style = solid]; +// DOT-NEXT: v24 -> v25 [label = "1", style = solid]; +// DOT-NEXT: v19 -> v26 [label = "0", style = solid]; +// DOT-NEXT: v24 -> v26 [label = "1", style = solid]; +// DOT-NEXT: v21 -> v27 [label = "0", style = solid]; +// DOT-NEXT: v24 -> v27 [label = "1", style = solid]; +// DOT-NEXT: v18 -> v28 [label = "0", style = solid]; +// DOT-NEXT: v24 -> v28 [label = "1", style = solid]; +// DOT-NEXT: v22 -> v29 [label = "0", style = solid]; +// DOT-NEXT: v24 -> v29 [label = "1", style = solid]; +// DOT-NEXT: v24 -> v30 [label = "", style = solid]; +// DOT-NEXT: v18 -> v31 [label = "0", style = solid]; +// DOT-NEXT: v30 -> v31 [label = "1", style = solid]; +// DOT-NEXT: v20 -> v32 [label = "0", style = solid]; +// DOT-NEXT: v30 -> v32 [label = "1", style = solid]; +// DOT-NEXT: v21 -> v33 [label = "0", style = solid]; +// DOT-NEXT: v30 -> v33 [label = "1", style = solid]; +// DOT-NEXT: v31 -> v34 [label = "", style = solid]; +// DOT-NEXT: v34 -> v35 [label = "", style = solid]; +// DOT-NEXT: v35 -> v36 [label = "0", style = solid]; +// DOT-NEXT: v35 -> v36 [label = "1", style = solid]; +// DOT-NEXT: v31 -> v37 [label = "0", style = solid]; +// DOT-NEXT: v34 -> v37 [label = "1", style = solid]; +// DOT-NEXT: v32 -> v38 [label = "0", style = solid]; +// DOT-NEXT: v34 -> v38 [label = "1", style = solid]; +// DOT-NEXT: v33 -> v39 [label = "0", style = solid]; +// DOT-NEXT: v34 -> v39 [label = "1", style = solid]; +// DOT-NEXT: v37 -> v40 [label = "", style = solid]; +// DOT-NEXT: v40 -> v41 [label = "", style = solid]; +// DOT-NEXT: v38 -> v42 [label = "0", style = solid]; +// DOT-NEXT: v39 -> v42 [label = "1", style = solid]; +// DOT-NEXT: v41 -> v42 [label = "2", style = solid]; +// DOT-NEXT: v41 -> v43 [label = "", style = solid]; +// DOT-NEXT: v25 -> v44 [label = "", style = solid]; +// DOT-NEXT: v44 -> v45 [label = "", style = solid]; +// DOT-NEXT: v26 -> v46 [label = "0", style = solid]; +// DOT-NEXT: v27 -> v46 [label = "1", style = solid]; +// DOT-NEXT: v45 -> v46 [label = "2", style = solid]; +// DOT-NEXT: v28 -> v47 [label = "", style = solid]; +// DOT-NEXT: v47 -> v48 [label = "", style = solid]; +// DOT-NEXT: v28 -> v49 [label = "0", style = solid]; +// DOT-NEXT: v47 -> v49 [label = "1", style = solid]; +// DOT-NEXT: v25 -> v50 [label = "0", style = solid]; +// DOT-NEXT: v47 -> v50 [label = "1", style = solid]; +// DOT-NEXT: v29 -> v51 [label = "0", style = solid]; +// DOT-NEXT: v47 -> v51 [label = "1", style = solid]; +// DOT-NEXT: v48 -> v52 [label = "0", style = solid]; +// DOT-NEXT: v48 -> v52 [label = "1", style = solid]; +// DOT-NEXT: v49 -> v53 [label = "", style = solid]; +// DOT-NEXT: v50 -> v54 [label = "", style = solid]; +// DOT-NEXT: v53 -> v56 [label = "0", style = solid]; +// DOT-NEXT: v55 -> v56 [label = "1", style = solid]; +// DOT-NEXT: v54 -> v58 [label = "0", style = solid]; +// DOT-NEXT: v57 -> v58 [label = "1", style = solid]; +// DOT-NEXT: v51 -> v60 [label = "0", style = solid]; +// DOT-NEXT: v59 -> v60 [label = "1", style = solid]; +// DOT-NEXT: v51 -> v62 [label = "0", style = solid]; +// DOT-NEXT: v61 -> v62 [label = "1", style = solid]; +// DOT-NEXT: v62 -> v63 [label = "", style = solid]; +// DOT-NEXT: v63 -> v64 [label = "", style = solid]; +// DOT-NEXT: v62 -> v65 [label = "", style = solid]; +// DOT-NEXT: v60 -> v67 [label = "0", style = solid]; +// DOT-NEXT: v66 -> v67 [label = "1", style = solid]; +// DOT-NEXT: v56 -> v69 [label = "0", style = solid]; +// DOT-NEXT: v68 -> v69 [label = "1", style = solid]; +// DOT-NEXT: v58 -> v71 [label = "0", style = solid]; +// DOT-NEXT: v70 -> v71 [label = "1", style = solid]; +// DOT-NEXT: v63 -> v73 [label = "0", style = solid]; +// DOT-NEXT: v72 -> v73 [label = "1", style = solid]; +// DOT-NEXT: v62 -> v75 [label = "0", style = solid]; +// DOT-NEXT: v74 -> v75 [label = "1", style = solid]; +// DOT-NEXT: v65 -> v77 [label = "0", style = solid]; +// DOT-NEXT: v76 -> v77 [label = "1", style = solid]; +// DOT-NEXT: v60 -> v79 [label = "0", style = solid]; +// DOT-NEXT: v78 -> v79 [label = "1", style = solid]; +// DOT-NEXT: v79 -> v80 [label = "", style = solid]; +// DOT-NEXT: v80 -> v81 [label = "", style = solid]; +// DOT-NEXT: v77 -> v82 [label = "", style = solid]; +// DOT-NEXT: v75 -> v83 [label = "0", style = solid]; +// DOT-NEXT: v79 -> v83 [label = "1", style = solid]; +// DOT-NEXT: v83 -> v84 [label = "", style = solid]; +// DOT-NEXT: v82 -> v85 [label = "0", style = solid]; +// DOT-NEXT: v84 -> v85 [label = "1", style = solid]; +// DOT-NEXT: v81 -> v85 [label = "2", style = solid]; +// DOT-NEXT: v85 -> v86 [label = "0", style = solid]; +// DOT-NEXT: v80 -> v86 [label = "1", style = solid]; +// DOT-NEXT: v73 -> v87 [label = "", style = solid]; +// DOT-NEXT: v83 -> v88 [label = "", style = solid]; +// DOT-NEXT: v79 -> v89 [label = "", style = solid]; +// DOT-NEXT: v89 -> v90 [label = "", style = solid]; +// DOT-NEXT: v88 -> v91 [label = "0", style = solid]; +// DOT-NEXT: v90 -> v91 [label = "1", style = solid]; +// DOT-NEXT: v87 -> v91 [label = "2", style = solid]; +// DOT-NEXT: v91 -> v92 [label = "0", style = solid]; +// DOT-NEXT: v73 -> v92 [label = "1", style = solid]; +// DOT-NEXT: v79 -> v93 [label = "", style = solid]; +// DOT-NEXT: v93 -> v94 [label = "0", style = solid]; +// DOT-NEXT: v71 -> v94 [label = "1", style = solid]; +// DOT-NEXT: v94 -> v95 [label = "", style = solid]; +// DOT-NEXT: v93 -> v96 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v96 [label = "1", style = solid]; +// DOT-NEXT: v96 -> v97 [label = "0", style = solid]; +// DOT-NEXT: v78 -> v97 [label = "1", style = solid]; +// DOT-NEXT: v77 -> v98 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v98 [label = "1", style = solid]; +// DOT-NEXT: v98 -> v99 [label = "0", style = solid]; +// DOT-NEXT: v76 -> v99 [label = "1", style = solid]; +// DOT-NEXT: v75 -> v100 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v100 [label = "1", style = solid]; +// DOT-NEXT: v100 -> v101 [label = "0", style = solid]; +// DOT-NEXT: v74 -> v101 [label = "1", style = solid]; +// DOT-NEXT: v73 -> v102 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v102 [label = "1", style = solid]; +// DOT-NEXT: v102 -> v103 [label = "0", style = solid]; +// DOT-NEXT: v72 -> v103 [label = "1", style = solid]; +// DOT-NEXT: v71 -> v104 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v104 [label = "1", style = solid]; +// DOT-NEXT: v104 -> v105 [label = "0", style = solid]; +// DOT-NEXT: v70 -> v105 [label = "1", style = solid]; +// DOT-NEXT: v69 -> v106 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v106 [label = "1", style = solid]; +// DOT-NEXT: v106 -> v107 [label = "0", style = solid]; +// DOT-NEXT: v68 -> v107 [label = "1", style = solid]; +// DOT-NEXT: v67 -> v108 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v108 [label = "1", style = solid]; +// DOT-NEXT: v108 -> v109 [label = "0", style = solid]; +// DOT-NEXT: v66 -> v109 [label = "1", style = solid]; +// DOT-NEXT: v75 -> v110 [label = "0", style = solid]; +// DOT-NEXT: v94 -> v110 [label = "1", style = solid]; +// DOT-NEXT: v69 -> v111 [label = "0", style = solid]; +// DOT-NEXT: v94 -> v111 [label = "1", style = solid]; +// DOT-NEXT: v67 -> v112 [label = "0", style = solid]; +// DOT-NEXT: v94 -> v112 [label = "1", style = solid]; +// DOT-NEXT: v71 -> v113 [label = "0", style = solid]; +// DOT-NEXT: v94 -> v113 [label = "1", style = solid]; +// DOT-NEXT: v110 -> v114 [label = "", style = solid]; +// DOT-NEXT: v114 -> v115 [label = "0", style = solid]; +// DOT-NEXT: v111 -> v115 [label = "1", style = solid]; +// DOT-NEXT: v115 -> v116 [label = "", style = solid]; +// DOT-NEXT: v114 -> v117 [label = "0", style = solid]; +// DOT-NEXT: v116 -> v117 [label = "1", style = solid]; +// DOT-NEXT: v117 -> v118 [label = "0", style = solid]; +// DOT-NEXT: v61 -> v118 [label = "1", style = solid]; +// DOT-NEXT: v112 -> v119 [label = "0", style = solid]; +// DOT-NEXT: v116 -> v119 [label = "1", style = solid]; +// DOT-NEXT: v119 -> v120 [label = "0", style = solid]; +// DOT-NEXT: v59 -> v120 [label = "1", style = solid]; +// DOT-NEXT: v113 -> v121 [label = "0", style = solid]; +// DOT-NEXT: v116 -> v121 [label = "1", style = solid]; +// DOT-NEXT: v121 -> v122 [label = "0", style = solid]; +// DOT-NEXT: v57 -> v122 [label = "1", style = solid]; +// DOT-NEXT: v111 -> v123 [label = "0", style = solid]; +// DOT-NEXT: v116 -> v123 [label = "1", style = solid]; +// DOT-NEXT: v123 -> v124 [label = "0", style = solid]; +// DOT-NEXT: v55 -> v124 [label = "1", style = solid]; +// DOT-NEXT: v115 -> v125 [label = "0", style = solid]; +// DOT-NEXT: v115 -> v125 [label = "1", style = solid]; +// DOT-NEXT: v52 -> v126 [label = "0", style = solid]; +// DOT-NEXT: v36 -> v126 [label = "1", style = solid]; +// DOT-NEXT: v125 -> v126 [label = "2", style = solid]; diff --git a/test/e2e/fft/fft_kernel.mlir b/test/e2e/fft/fft_kernel.mlir index dfb820c3..1330bb68 100644 --- a/test/e2e/fft/fft_kernel.mlir +++ b/test/e2e/fft/fft_kernel.mlir @@ -675,3166 +675,6 @@ // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 14 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 234 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3220001 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 324 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2500000 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 331 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 111 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2640004 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "3" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 195 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 316 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 323 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "4" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SUB" -// YAML-NEXT: id: 338 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 227 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 240 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 58 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 3080001 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 80 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 141 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 90 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 122 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 147 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 184 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 229 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 66 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 155 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1760001 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 148 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2080001 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 209 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1600000 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 17 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2860002 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 980001 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 305 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SUB" -// YAML-NEXT: id: 340 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 980002 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 1270001 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 224 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SGT" -// YAML-NEXT: id: 52 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 242 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 69 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 91 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 570001 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 308 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 123 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 307 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 89 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 193 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 233 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 68 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 88 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 120 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 146 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3110001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 189 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 64 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1760002 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 121 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2080002 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 206 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 720000 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 17 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 84 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 279 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 294 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3340002 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2130002 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 960000 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 113 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 115 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 226 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 62 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 276 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$7" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 309 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 70 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 92 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 124 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 74 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 259 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$7" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 63 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 277 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 301 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1820001 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 34 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 49 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 326 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 150 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 328 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 17 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SUB" -// YAML-NEXT: id: 332 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3340001 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2640003 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 208 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 112 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3360000 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 128 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 271 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SHL" -// YAML-NEXT: id: 50 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "OR" -// YAML-NEXT: id: 65 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1830001 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3120001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 235 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 231 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$11" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 201 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 2400000 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 299 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 298 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 343 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 347 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 47 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 167 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 191 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$11" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$7" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 152 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1770000 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1740000 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 230 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 217 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2050000 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1760000 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 196 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2100000 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2080000 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2060000 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 85 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 266 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2150000 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2090000 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 187 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2860001 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2130000 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 17 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 295 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2890001 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 160 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 225 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$7" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2870003 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2140000 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 283 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#128" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2140001 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2840000 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 243 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 36 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3430001 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 246 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DIV" -// YAML-NEXT: id: 51 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 430000 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 3090001 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 67 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 570000 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 86 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 470001 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 3070003 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SHL" -// YAML-NEXT: id: 117 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 149 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CAST_TRUNC" -// YAML-NEXT: id: 169 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 87 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 118 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 460001 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 145 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 116 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1520000 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 192 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 178 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 190 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1770001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 222 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 245 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 256 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2060001 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 174 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 273 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1760003 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 198 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 17 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 186 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2130001 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2830000 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 990001 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 296 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2890002 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2010001 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2820000 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 940001 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 310 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 339 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 940002 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 3 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2140002 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 126 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 38 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2150004 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 470000 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 3090002 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 102 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 2 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 37 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SHL" -// YAML-NEXT: id: 53 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 104 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 151 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1340001 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 170 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 119 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 185 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 272 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2640002 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 17 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 188 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI" -// YAML-NEXT: id: 293 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 335 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 238 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "11" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 303 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 315 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 261 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 171 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 253 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "12" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 3070001 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1730001 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1740001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 258 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2050001 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 274 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 275 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 17 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2870002 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2100001 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2150001 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "13" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2150002 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 282 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 297 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 3070002 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 161 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 133 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "AND" -// YAML-NEXT: id: 168 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4294967294" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 130 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 232 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1730002 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 257 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1740002 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2050002 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 236 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2870001 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 17 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 300 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2880001 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 228 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 199 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "14" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2150003 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 136 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1730003 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2640001 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 205 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 17 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 223 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2880002 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" // ASM: # Compiled II: 19 @@ -4129,324 +969,5 @@ // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [WEST, RED], [SOUTH, RED], [NORTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(0,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$11] -> [EAST, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=19, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [$0] -> [SOUTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [EAST, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$1] -> [SOUTH, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$3] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [EAST, RED], [SOUTH, RED] -> [$0], [EAST, RED], [$1], [$3], [$4], [NORTH, RED], [SOUTH, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$1], [$6], [$11], [SOUTH, RED], [$3], [$7], [$5] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$1] -> [EAST, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$3] -> [NORTH, RED] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [EAST, RED] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$5] -> [NORTH, RED] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$3] -> [SOUTH, RED] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$6] -> [NORTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$3] -> [SOUTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$1] -> [EAST, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [SOUTH, RED] -> [EAST, RED] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$3] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$6] -> [NORTH, RED] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$1] -> [SOUTH, RED] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [SOUTH, RED], [$4] -> [$2] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$1] -> [EAST, RED] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [SOUTH, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=17, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=17) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$7] -> [$0] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$1] -> [EAST, RED] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=18, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=18) -// ASM: PE(1,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#128] -> [$0] (t=0, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=19, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$5] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [SOUTH, RED] -> [SOUTH, RED], [$1], [$0] (t=1, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=20, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$6] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DIV, [$0], [#2] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$1] -> [SOUTH, RED] (t=2, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [EAST, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [SOUTH, RED] -> [$1], [$0] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [SOUTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$2] -> [EAST, RED], [$0], [$2] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [SOUTH, RED] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: SHL, [$0], [#1] -> [$0] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [SOUTH, RED] -> [$0], [NORTH, RED] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: CAST_TRUNC, [$0] -> [SOUTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$4] -> [EAST, RED], [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$3] -> [EAST, RED], [NORTH, RED], [$0] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [WEST, RED], [$0] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$2], [$5] -> [NORTH, RED], [$0] (t=11, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [NORTH, RED], [$6] -> [NORTH, RED], [WEST, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [$0] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [NORTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$3] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [SOUTH, RED] -> [$0], [EAST, RED] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [NORTH, RED], [$0], [$6], [$4], [WEST, RED], [SOUTH, RED] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [SOUTH, RED], [$1] -> [NORTH, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$6] -> [WEST, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=17, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=17) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$4] -> [$4] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=18, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$2] (t=18, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=18) -// ASM: PE(2,2): -// ASM-NEXT: { -// ASM-NEXT: ADD, [NORTH, RED], [$0] -> [WEST, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=1, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=20, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$2] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [WEST, RED], [$0] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=3, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [SOUTH, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#1] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$2] -> [WEST, RED], [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: SHL, [$0], [#1] -> [SOUTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$2] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$1], [SOUTH, RED] -> [EAST, RED], [$0] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [SOUTH, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$2], [$3] -> [NORTH, RED], [$0] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [WEST, RED], [$0] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [$0] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [SOUTH, RED], [WEST, RED] -> [WEST, RED] (t=17, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=17) -// ASM-NEXT: { -// ASM-NEXT: PHI, [WEST, RED], [$0] -> [EAST, RED] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=18, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$3] (t=18, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=18) -// ASM: PE(3,2): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [WEST, RED] -> [WEST, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [SOUTH, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GEP, [WEST, RED] -> [SOUTH, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM: PE(0,3): -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [EAST, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GEP, [EAST, RED] -> [$0], [SOUTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [EAST, RED] -> [EAST, RED], [SOUTH, RED] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [SOUTH, RED], [EAST, RED] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=17, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=17) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=18, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=18) -// ASM: PE(1,3): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [SOUTH, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: AND, [$0], [#4294967294] -> [SOUTH, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$2] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$1], [SOUTH, RED] -> [WEST, RED], [$0] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [WEST, RED], [EAST, RED] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [SOUTH, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=17, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=17) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [WEST, RED] -> [SOUTH, RED] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=18, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=18) -// ASM: PE(2,3): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [SOUTH, RED] (t=17, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=17) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=18, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=18) diff --git a/test/e2e/fir/fir_kernel.mlir b/test/e2e/fir/fir_kernel.mlir index 38ddf22c..dbf5cbda 100644 --- a/test/e2e/fir/fir_kernel.mlir +++ b/test/e2e/fir/fir_kernel.mlir @@ -25,7 +25,8 @@ // RUN: FileCheck %s --input-file=%t-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=%t-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f64 = dense<64> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// MAPPING-NEXT: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data @@ -54,7 +55,7 @@ // MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 27 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 30 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 34 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data @@ -367,107 +368,11 @@ // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 7 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 13 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#32" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 27 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "11" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 14 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" // ASM: # Compiled II: 5 @@ -534,13 +439,13 @@ // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [SOUTH, RED], [EAST, RED], [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$1] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED] (t=3, inv_iters=0) @@ -576,3 +481,72 @@ // RUN: FileCheck %s --input-file=fir_kernel.dot -check-prefix=DOT // DOT: digraph G { +// DOT-NEXT: compound = true; +// DOT-NEXT: subgraph cluster_1 { +// DOT-NEXT: v2 [label = " ", shape = plain]; +// DOT-NEXT: label = "builtin.module : ()\n\ndlti.dl_spec: #dlti.dl_spec", shape = ellipse, style = filled]; +// DOT-NEXT: v19 [fillcolor = "0.266667 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v20 [fillcolor = "0.200000 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; +// DOT-NEXT: v21 [fillcolor = "0.266667 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v22 [fillcolor = "0.333333 1.0 1.0", label = "neura.mul : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v23 [fillcolor = "0.400000 1.0 1.0", label = "neura.add : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v24 [fillcolor = "0.400000 1.0 1.0", label = "neura.add : (!neura.data)\n\nrhs_value: 1 : i64", shape = ellipse, style = filled]; +// DOT-NEXT: v25 [fillcolor = "0.466667 1.0 1.0", label = "neura.icmp : (!neura.data)\n\ncmpType: \"eq\"\nrhs_value: 32 : i64", shape = ellipse, style = filled]; +// DOT-NEXT: v26 [fillcolor = "0.533333 1.0 1.0", label = "neura.not : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v27 [fillcolor = "0.600000 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v28 [fillcolor = "0.666667 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v29 [fillcolor = "0.600000 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v30 [fillcolor = "0.666667 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v31 [fillcolor = "0.600000 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v32 [fillcolor = "0.733333 1.0 1.0", label = "neura.return_value : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v33 [fillcolor = "0.800000 1.0 1.0", label = "neura.yield : ()\n\noperandSegmentSizes: array", shape = ellipse, style = filled]; +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: v13 -> v15 [label = "0", style = solid]; +// DOT-NEXT: v14 -> v15 [label = "1", style = solid]; +// DOT-NEXT: v12 -> v17 [label = "0", style = solid]; +// DOT-NEXT: v16 -> v17 [label = "1", style = solid]; +// DOT-NEXT: v17 -> v18 [label = "", style = solid]; +// DOT-NEXT: v18 -> v19 [label = "", style = solid]; +// DOT-NEXT: v17 -> v20 [label = "", style = solid]; +// DOT-NEXT: v20 -> v21 [label = "", style = solid]; +// DOT-NEXT: v21 -> v22 [label = "0", style = solid]; +// DOT-NEXT: v19 -> v22 [label = "1", style = solid]; +// DOT-NEXT: v22 -> v23 [label = "0", style = solid]; +// DOT-NEXT: v15 -> v23 [label = "1", style = solid]; +// DOT-NEXT: v17 -> v24 [label = "", style = solid]; +// DOT-NEXT: v24 -> v25 [label = "", style = solid]; +// DOT-NEXT: v25 -> v26 [label = "", style = solid]; +// DOT-NEXT: v24 -> v27 [label = "0", style = solid]; +// DOT-NEXT: v26 -> v27 [label = "1", style = solid]; +// DOT-NEXT: v27 -> v28 [label = "0", style = solid]; +// DOT-NEXT: v16 -> v28 [label = "1", style = solid]; +// DOT-NEXT: v23 -> v29 [label = "0", style = solid]; +// DOT-NEXT: v26 -> v29 [label = "1", style = solid]; +// DOT-NEXT: v29 -> v30 [label = "0", style = solid]; +// DOT-NEXT: v14 -> v30 [label = "1", style = solid]; +// DOT-NEXT: v23 -> v31 [label = "0", style = solid]; +// DOT-NEXT: v25 -> v31 [label = "1", style = solid]; +// DOT-NEXT: v31 -> v32 [label = "", style = solid]; +// DOT-NEXT: } diff --git a/test/e2e/fir/fir_kernel_vec.mlir b/test/e2e/fir/fir_kernel_vec.mlir index 263a3324..2c3262e6 100644 --- a/test/e2e/fir/fir_kernel_vec.mlir +++ b/test/e2e/fir/fir_kernel_vec.mlir @@ -23,7 +23,8 @@ // RUN: FileCheck %s --input-file=%t-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=%t-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i16 = dense<16> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, "dlti.endianness" = "little", "dlti.stack_alignment" = 128 : i64>, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// MAPPING-NEXT: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = dense<0> : vector<4xi32>}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data, i1> // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data, i1> @@ -52,7 +53,7 @@ // MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 27 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 30 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 34 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data @@ -69,6 +70,7 @@ // MAPPING-NEXT: neura.return_value %39 : !neura.data {dfg_id = 43 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 3 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} // MAPPING-NEXT: } +// MAPPING-NEXT: } // YAML: array_config: @@ -371,118 +373,6 @@ // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 7 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 13 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#32" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 27 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "11" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 14 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "13" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VALUE" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 2 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" // ASM: # Compiled II: 5 diff --git a/test/e2e/gemm/gemm_kernel.mlir b/test/e2e/gemm/gemm_kernel.mlir index 8f59cd9a..495cb2de 100644 --- a/test/e2e/gemm/gemm_kernel.mlir +++ b/test/e2e/gemm/gemm_kernel.mlir @@ -298,47 +298,302 @@ // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 // YAML-NEXT: compiled_ii: 17 -// YAML: core_id: "0" -// YAML: entries: -// YAML: - entry_id: "entry0" -// YAML: instructions: -// YAML: - index_per_ii: 0 -// YAML: operations: -// YAML: - opcode: "GRANT_PREDICATE" -// YAML: - index_per_ii: 1 -// YAML: operations: -// YAML: - opcode: "MUL" -// YAML: - index_per_ii: 2 -// YAML: operations: -// YAML: - opcode: "GRANT_PREDICATE" -// YAML: - index_per_ii: 4 -// YAML: operations: -// YAML: - opcode: "GRANT_ONCE" -// YAML: - opcode: "DATA_MOV" -// YAML: - index_per_ii: 5 -// YAML: operations: -// YAML: - opcode: "DATA_MOV" -// YAML: - index_per_ii: 8 -// YAML: operations: -// YAML: - opcode: "GRANT_ONCE" -// YAML: - index_per_ii: 9 -// YAML: operations: -// YAML: - opcode: "GRANT_PREDICATE" -// YAML: - index_per_ii: 10 -// YAML: operations: -// YAML: - opcode: "ZEXT" -// YAML: - index_per_ii: 13 -// YAML: operations: -// YAML: - opcode: "DATA_MOV" -// YAML: - index_per_ii: 14 -// YAML: operations: -// YAML: - opcode: "DATA_MOV" -// YAML: - index_per_ii: 15 -// YAML: operations: -// YAML: - opcode: "NOT" -// YAML: - index_per_ii: 16 -// YAML: operations: -// YAML: - opcode: "GRANT_ONCE" +// YAML-NEXT: cores: +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "0" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 66 +// YAML-NEXT: time_step: 17 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "MUL" +// YAML-NEXT: id: 152 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 184 +// YAML-NEXT: time_step: 19 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$3" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 6 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 43 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$2" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 52 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 8 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 58 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 10 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ZEXT" +// YAML-NEXT: id: 71 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 13 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 174 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$3" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 14 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 137 +// YAML-NEXT: time_step: 14 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 15 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 45 +// YAML-NEXT: time_step: 15 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$2" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 16 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 53 +// YAML-NEXT: time_step: 16 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 1420001 +// YAML-NEXT: time_step: 17 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 72 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 181 +// YAML-NEXT: time_step: 19 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI" +// YAML-NEXT: id: 255 +// YAML-NEXT: time_step: 21 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "RETURN_VOID" +// YAML-NEXT: id: 267 +// YAML-NEXT: time_step: 22 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 11 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 880002 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 12 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 1740001 +// YAML-NEXT: time_step: 12 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 13 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 1770001 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 139 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 187 +// YAML-NEXT: time_step: 19 +// YAML-NEXT: invalid_iterations: 1 // // ASM: # Compiled II: 17 // ASM: PE(0,0): @@ -380,3 +635,255 @@ // ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=16, inv_iters=0) // ASM-NEXT: } (idx_per_ii=16) // ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: ADD, [EAST, RED], [WEST, RED] -> [EAST, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: PHI, [$0], [NORTH, RED] -> [$0] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [$0] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [WEST, RED] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: STORE, [WEST, RED], [$0] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [WEST, RED] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM: PE(0,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [arg1] -> [$0] (t=1, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$1] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: AND, [NORTH, RED], [$0] -> [$0], [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$6] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [$0] -> [SOUTH, RED], [NORTH, RED], [EAST, RED], [$0], [$4] (t=4, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$2] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [SOUTH, RED], [$0] -> [$0], [EAST, RED] (t=5, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$3] (t=22, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$5] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$3] -> [EAST, RED], [$0] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$7] (t=24, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$1] -> [EAST, RED], [$0] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$2] -> [$2], [NORTH, RED], [EAST, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$5] -> [$0] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$7] -> [$0] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [EAST, RED] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$6] -> [SOUTH, RED], [$0] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [EAST, RED], [NORTH, RED] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: GEP, [$2], [$3] -> [NORTH, RED] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$4] -> [SOUTH, RED] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$4], [$0] -> [WEST, RED] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [$2], [$0] -> [$0], [$2], [$3] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$4], [$5], [$0], [EAST, RED], [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [SOUTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$4] -> [EAST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$5] -> [WEST, RED] (t=21, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$2] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [WEST, RED] -> [$0] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: ZEXT, [$0] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [WEST, RED], [$2] -> [EAST, RED], [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$1] -> [WEST, RED], [EAST, RED], [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$2] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [$0], [NORTH, RED] -> [$0], [$1], [EAST, RED], [$3], [WEST, RED], [$4], [NORTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$3], [$0], [$7], [$6], [NORTH, RED], [$5], [SOUTH, RED], [WEST, RED] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$3] -> [EAST, RED] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [$0] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$7] -> [WEST, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$6] -> [SOUTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$5] -> [NORTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$4] -> [EAST, RED] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [NORTH, RED], [$4] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [$1] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$0] (t=15, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [$2], [EAST, RED] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM: PE(2,1): +// ASM-NEXT: { +// ASM-NEXT: GEP, [$4], [$5] -> [SOUTH, RED], [$4] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$3] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED], [$0] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$4] -> [SOUTH, RED] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$2], [WEST, RED] -> [NORTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$4] (t=20, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$6] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [arg1] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$3], [$0] -> [$1] (t=22, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$2] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$7], [$8] -> [$7] (t=23, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$3] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$5] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$1] -> [$0] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$2] -> [$2], [$0] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$4] -> [$4], [SOUTH, RED], [$0] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED], [WEST, RED] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GEP, [$2], [$0] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$7] -> [SOUTH, RED], [$7] (t=15, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$3], [$6] -> [EAST, RED], [$0] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$2] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM: PE(3,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM: PE(0,2): diff --git a/test/e2e/gemv/gemv_kernel.mlir b/test/e2e/gemv/gemv_kernel.mlir index 3ec74c39..e1cd0d94 100644 --- a/test/e2e/gemv/gemv_kernel.mlir +++ b/test/e2e/gemv/gemv_kernel.mlir @@ -22,15 +22,16 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // -// MAPPING: func.func @kernel_gemv_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 11 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 3 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i32 = dense<32> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i16 = dense<16> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// MAPPING-NEXT: func.func @kernel_gemv_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 14 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 3 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data -// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 14 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 14 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %4 = neura.phi_start %3, %2 {dfg_id = 17 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %5 = neura.reserve {dfg_id = 3 : i32} : !neura.data -// MAPPING-NEXT: %6 = "neura.data_mov"(%0) {dfg_id = 12 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = neura.phi_start %6, %5 {dfg_id = 15 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %6 = "neura.data_mov"(%0) {dfg_id = 12 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = neura.phi_start %6, %5 {dfg_id = 15 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %8 = neura.reserve {dfg_id = 4 : i32} : !neura.data // MAPPING-NEXT: %9 = "neura.data_mov"(%0) {dfg_id = 13 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %10 = neura.phi_start %9, %8 {dfg_id = 16 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data @@ -39,11 +40,11 @@ // MAPPING-NEXT: %13 = "neura.data_mov"(%12) {dfg_id = 37 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %14 = "neura.gep"(%13) <{operandSegmentSizes = array}> {dfg_id = 43 : i32, lhs_value = "%arg0", mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %15 = neura.reserve {dfg_id = 5 : i32} : !neura.data -// MAPPING-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 23 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 321 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 23 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %17 = neura.phi_start %16, %15 {dfg_id = 29 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %18 = neura.reserve {dfg_id = 6 : i32} : !neura.data -// MAPPING-NEXT: %19 = "neura.data_mov"(%7) {dfg_id = 19 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 163 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 4 : i32}, {id = 163 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 5 : i32}, {id = 163 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 163 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = neura.phi_start %19, %18 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %19 = "neura.data_mov"(%7) {dfg_id = 19 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = neura.phi_start %19, %18 {dfg_id = 25 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %21 = neura.reserve {dfg_id = 7 : i32} : !neura.data // MAPPING-NEXT: %22 = "neura.data_mov"(%10) {dfg_id = 20 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %23 = neura.phi_start %22, %21 {dfg_id = 26 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data @@ -54,101 +55,102 @@ // MAPPING-NEXT: %28 = "neura.data_mov"(%4) {dfg_id = 22 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %29 = neura.phi_start %28, %27 {dfg_id = 28 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %30 = neura.reserve {dfg_id = 10 : i32} : !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%7) {dfg_id = 18 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%7) {dfg_id = 18 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %32 = neura.phi_start %31, %30 {dfg_id = 24 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %33 = "neura.data_mov"(%26) {dfg_id = 58 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%32) {dfg_id = 32 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%32) {dfg_id = 32 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %35 = "neura.gep"(%33, %34) <{operandSegmentSizes = array}> {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 74 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %37 = "neura.load"(%36) {dfg_id = 82 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 74 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %37 = "neura.load"(%36) {dfg_id = 82 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %38 = "neura.data_mov"(%32) {dfg_id = 31 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %39 = "neura.gep"(%38) <{operandSegmentSizes = array}> {dfg_id = 42 : i32, lhs_value = "%arg1", mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %40 = "neura.data_mov"(%39) {dfg_id = 46 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %41 = "neura.load"(%40) {dfg_id = 49 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %42 = "neura.data_mov"(%41) {dfg_id = 56 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %43 = "neura.data_mov"(%37) {dfg_id = 91 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %44 = "neura.mul"(%42, %43) {dfg_id = 93 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %45 = "neura.data_mov"(%44) {dfg_id = 97 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %42 = "neura.data_mov"(%41) {dfg_id = 56 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %43 = "neura.data_mov"(%37) {dfg_id = 91 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %44 = "neura.mul"(%42, %43) {dfg_id = 93 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %45 = "neura.data_mov"(%44) {dfg_id = 97 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %46 = "neura.data_mov"(%29) {dfg_id = 38 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %47 = "neura.add"(%45, %46) {dfg_id = 100 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %48 = "neura.data_mov"(%32) {dfg_id = 30 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %49 = "neura.add"(%48) {dfg_id = 41 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %50 = "neura.data_mov"(%49) {dfg_id = 45 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %51 = "neura.icmp"(%50) <{cmpType = "eq"}> {dfg_id = 48 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %52 = "neura.data_mov"(%51) {dfg_id = 55 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %53 = "neura.not"(%52) {dfg_id = 62 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %54 = "neura.data_mov"(%49) {dfg_id = 44 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 162 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 162 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %55 = "neura.data_mov"(%53) {dfg_id = 73 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %56 = neura.grant_predicate %54, %55 {dfg_id = 81 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %56 -> %30 {dfg_id = 90 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %57 = "neura.data_mov"(%47) {dfg_id = 106 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 194 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%53) {dfg_id = 72 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 195 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 195 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 195 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 195 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %59 = neura.grant_predicate %57, %58 {dfg_id = 112 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %59 -> %27 {dfg_id = 117 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 322 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 322 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 322 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 322 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 322 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 322 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %60 = "neura.data_mov"(%26) {dfg_id = 57 : i32, mapping_locs = [{id = 4003 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 4 : i32}, {id = 4003 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 5 : i32}, {id = 4003 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 4003 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 4003 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 4003 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 4003 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %61 = "neura.data_mov"(%53) {dfg_id = 71 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %62 = neura.grant_predicate %60, %61 {dfg_id = 80 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %62 -> %24 {dfg_id = 89 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %63 = "neura.data_mov"(%23) {dfg_id = 36 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 4002 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 4002 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 4002 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %64 = "neura.data_mov"(%53) {dfg_id = 70 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 21 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %52 = "neura.data_mov"(%51) {dfg_id = 55 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %53 = "neura.not"(%52) {dfg_id = 62 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %54 = "neura.data_mov"(%49) {dfg_id = 44 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %55 = "neura.data_mov"(%53) {dfg_id = 73 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %56 = neura.grant_predicate %54, %55 {dfg_id = 81 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %56 -> %30 {dfg_id = 90 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 168 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %57 = "neura.data_mov"(%47) {dfg_id = 106 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 328 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%53) {dfg_id = 72 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 41 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 45 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 336 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 336 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %59 = neura.grant_predicate %57, %58 {dfg_id = 112 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %59 -> %27 {dfg_id = 117 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 336 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 336 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 336 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 336 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 336 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 336 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 336 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 336 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %60 = "neura.data_mov"(%26) {dfg_id = 57 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 8000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %61 = "neura.data_mov"(%53) {dfg_id = 71 : i32, mapping_locs = [{id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 27 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %62 = neura.grant_predicate %60, %61 {dfg_id = 80 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %62 -> %24 {dfg_id = 89 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 4016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 4016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 4016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 4016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 4016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 4016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %63 = "neura.data_mov"(%23) {dfg_id = 36 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %64 = "neura.data_mov"(%53) {dfg_id = 70 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 25 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 4016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %65 = neura.grant_predicate %63, %64 {dfg_id = 79 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %65 -> %21 {dfg_id = 88 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 162 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 162 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 69 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 17 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 163 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 163 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 163 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %68 = neura.grant_predicate %66, %67 {dfg_id = 78 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %68 -> %18 {dfg_id = 87 : i32, mapping_locs = [{id = 166 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 11 : i32}, {id = 166 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 12 : i32}, {id = 166 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 13 : i32}, {id = 166 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 14 : i32}, {id = 166 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 15 : i32}, {id = 166 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 16 : i32}, {id = 166 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 17 : i32}, {id = 166 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %69 = "neura.data_mov"(%17) {dfg_id = 40 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%53) {dfg_id = 68 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 322 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 322 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 322 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %71 = neura.grant_predicate %69, %70 {dfg_id = 77 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %71 -> %15 {dfg_id = 86 : i32, mapping_locs = [{id = 323 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 323 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 323 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 323 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 323 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 323 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 323 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 323 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 323 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %65 -> %21 {dfg_id = 88 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 17 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 69 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %68 = neura.grant_predicate %66, %67 {dfg_id = 78 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %68 -> %18 {dfg_id = 87 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 216 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 216 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 216 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 216 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 216 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 216 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}, {id = 216 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 216 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 216 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 216 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}, {id = 216 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %69 = "neura.data_mov"(%17) {dfg_id = 40 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%53) {dfg_id = 68 : i32, mapping_locs = [{id = 312 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 6 : i32}, {id = 312 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 7 : i32}, {id = 312 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 312 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 312 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %71 = neura.grant_predicate %69, %70 {dfg_id = 77 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %71 -> %15 {dfg_id = 86 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 344 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 344 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 344 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 344 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 344 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}, {id = 344 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 344 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 344 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 344 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}, {id = 344 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %72 = "neura.data_mov"(%23) {dfg_id = 35 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %73 = "neura.data_mov"(%51) {dfg_id = 54 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %74 = neura.grant_predicate %72, %73 {dfg_id = 61 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %75 = "neura.data_mov"(%47) {dfg_id = 105 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %76 = "neura.data_mov"(%51) {dfg_id = 53 : i32, mapping_locs = [{id = 165 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 193 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %76 = "neura.data_mov"(%51) {dfg_id = 53 : i32, mapping_locs = [{id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 208 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %77 = neura.grant_predicate %75, %76 {dfg_id = 111 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %78 = "neura.data_mov"(%20) {dfg_id = 33 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %79 = "neura.data_mov"(%51) {dfg_id = 52 : i32, mapping_locs = [{id = 164 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 5 : i32}, {id = 164 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 6 : i32}, {id = 164 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 7 : i32}, {id = 164 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 8 : i32}, {id = 164 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = neura.grant_predicate %78, %79 {dfg_id = 60 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%17) {dfg_id = 39 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.data_mov"(%51) {dfg_id = 51 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = neura.grant_predicate %81, %82 {dfg_id = 59 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %84 = "neura.data_mov"(%74) {dfg_id = 67 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %85 = "neura.gep"(%84) <{operandSegmentSizes = array}> {dfg_id = 76 : i32, lhs_value = "%arg2", mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%77) {dfg_id = 116 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %87 = "neura.data_mov"(%85) {dfg_id = 85 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 118 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %88 = "neura.data_mov"(%74) {dfg_id = 66 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %89 = "neura.add"(%88) {dfg_id = 75 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 84 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %91 = "neura.icmp"(%90) <{cmpType = "eq"}> {dfg_id = 92 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %92 = "neura.data_mov"(%91) {dfg_id = 96 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %93 = "neura.not"(%92) {dfg_id = 99 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 83 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %95 = "neura.data_mov"(%93) {dfg_id = 104 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %96 = neura.grant_predicate %94, %95 {dfg_id = 110 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %96 -> %8 {dfg_id = 115 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %97 = "neura.data_mov"(%80) {dfg_id = 65 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %98 = "neura.data_mov"(%93) {dfg_id = 103 : i32, mapping_locs = [{id = 165 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 9 : i32}, {id = 165 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 10 : i32}, {id = 165 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %99 = neura.grant_predicate %97, %98 {dfg_id = 109 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %99 -> %5 {dfg_id = 114 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %100 = "neura.data_mov"(%83) {dfg_id = 64 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %101 = "neura.data_mov"(%93) {dfg_id = 102 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %102 = neura.grant_predicate %100, %101 {dfg_id = 108 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %102 -> %2 {dfg_id = 113 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 321 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 321 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 321 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %103 = "neura.data_mov"(%91) {dfg_id = 94 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %104 = "neura.data_mov"(%91) {dfg_id = 95 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %105 = neura.grant_predicate %103, %104 {dfg_id = 98 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %106 = "neura.data_mov"(%105) {dfg_id = 101 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %106 : !neura.data {dfg_id = 107 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} +// MAPPING-NEXT: %78 = "neura.data_mov"(%20) {dfg_id = 33 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %79 = "neura.data_mov"(%51) {dfg_id = 52 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 176 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = neura.grant_predicate %78, %79 {dfg_id = 60 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%17) {dfg_id = 39 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.data_mov"(%51) {dfg_id = 51 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 336 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 336 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = neura.grant_predicate %81, %82 {dfg_id = 59 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %84 = "neura.data_mov"(%74) {dfg_id = 67 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %85 = "neura.gep"(%84) <{operandSegmentSizes = array}> {dfg_id = 76 : i32, lhs_value = "%arg2", mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%77) {dfg_id = 116 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %87 = "neura.data_mov"(%85) {dfg_id = 85 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 118 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %88 = "neura.data_mov"(%74) {dfg_id = 66 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %89 = "neura.add"(%88) {dfg_id = 75 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 84 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %91 = "neura.icmp"(%90) <{cmpType = "eq"}> {dfg_id = 92 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %92 = "neura.data_mov"(%91) {dfg_id = 96 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %93 = "neura.not"(%92) {dfg_id = 99 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 83 : i32, mapping_locs = [{id = 184 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 7 : i32}, {id = 184 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 184 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 184 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 184 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %95 = "neura.data_mov"(%93) {dfg_id = 104 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 24 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 29 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %96 = neura.grant_predicate %94, %95 {dfg_id = 110 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %96 -> %8 {dfg_id = 115 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %97 = "neura.data_mov"(%80) {dfg_id = 65 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 176 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %98 = "neura.data_mov"(%93) {dfg_id = 103 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %99 = neura.grant_predicate %97, %98 {dfg_id = 109 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %99 -> %5 {dfg_id = 114 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %100 = "neura.data_mov"(%83) {dfg_id = 64 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %101 = "neura.data_mov"(%93) {dfg_id = 102 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %102 = neura.grant_predicate %100, %101 {dfg_id = 108 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %102 -> %2 {dfg_id = 113 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %103 = "neura.data_mov"(%91) {dfg_id = 94 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %104 = "neura.data_mov"(%91) {dfg_id = 95 : i32, mapping_locs = [{id = 304 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 304 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %105 = neura.grant_predicate %103, %104 {dfg_id = 98 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %106 = "neura.data_mov"(%105) {dfg_id = 101 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %106 : !neura.data {dfg_id = 107 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 3 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 11 : i32} // MAPPING-NEXT: } +// MAPPING-NEXT: } // YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 11 +// YAML-NEXT: compiled_ii: 14 // YAML-NEXT: cores: // YAML-NEXT: - column: 0 // YAML-NEXT: row: 0 @@ -172,13 +174,13 @@ // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "CTRL_MOV" // YAML-NEXT: id: 115 -// YAML-NEXT: time_step: 11 +// YAML-NEXT: time_step: 14 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: @@ -189,7 +191,7 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" @@ -222,40 +224,6 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 67 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 76 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 710003 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: - column: 1 // YAML-NEXT: row: 0 // YAML-NEXT: core_id: "1" @@ -265,120 +233,33 @@ // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 12 +// YAML-NEXT: id: 120001 // YAML-NEXT: time_step: 1 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 15 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 190000 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 7 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 82 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 710002 -// YAML-NEXT: time_step: 8 +// YAML-NEXT: id: 560001 +// YAML-NEXT: time_step: 7 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 83 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 110 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 850001 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - column: 2 // YAML-NEXT: row: 0 // YAML-NEXT: core_id: "2" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 118 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 6 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "LOAD" @@ -389,54 +270,14 @@ // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 710001 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 93 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: - column: 0 // YAML-NEXT: row: 1 // YAML-NEXT: core_id: "4" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 80 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" @@ -458,12 +299,12 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: @@ -474,10 +315,10 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" @@ -493,57 +334,45 @@ // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 7 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 75 +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 82 // YAML-NEXT: time_step: 7 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 8 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 92 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 70 // YAML-NEXT: time_step: 8 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 9 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 98 +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 76 // YAML-NEXT: time_step: 9 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 10 // YAML-NEXT: operations: @@ -552,588 +381,82 @@ // YAML-NEXT: time_step: 10 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 71 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: - index_per_ii: 11 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 78 +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 89 // YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$6" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: - index_per_ii: 12 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 109 +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 118 // YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 24 -// YAML-NEXT: time_step: 3 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: - index_per_ii: 13 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 41 -// YAML-NEXT: time_step: 4 +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 1150001 +// YAML-NEXT: time_step: 13 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 19 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 48 -// YAML-NEXT: time_step: 5 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 15 +// YAML-NEXT: time_step: 2 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 58 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 63 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 530000 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 81 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 25 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 69 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 830001 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 99 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 700003 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 60 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 112 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 31 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 42 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 62 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 690000 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 53 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 38 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 700002 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 100 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 111 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 700001 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 107 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 51 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 59 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 108 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 113 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 117 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 17 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 28 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 68 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 +// YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 77 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// ASM: # Compiled II: 11 +// ASM: # Compiled II: 14 // ASM: PE(0,0): // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED], [$0] (t=0, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$1] (t=11, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$8] (t=14, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [$0], [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [$0], [NORTH, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: SHL, [$0], [#4] -> [$0] (t=2, inv_iters=0) @@ -1141,119 +464,95 @@ // ASM-NEXT: { // ASM-NEXT: GEP, [$0] -> [NORTH, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [EAST, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) // ASM: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=1, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [NORTH, RED] -> [$0], [NORTH, RED] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [WEST, RED] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) // ASM: PE(2,0): // ASM-NEXT: { -// ASM-NEXT: STORE, [NORTH, RED], [WEST, RED] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: LOAD, [NORTH, RED] -> [WEST, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [WEST, RED] -> [NORTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) // ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$3], [$0] -> [$2] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$2] -> [EAST, RED], [$3] (t=4, inv_iters=0) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$16] -> [EAST, RED], [NORTH, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [$2], [$0] (t=5, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [$8], [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [SOUTH, RED], [$0] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$0], [EAST, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: LOAD, [EAST, RED] -> [EAST, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [EAST, RED], [$0], [$1] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: GEP, [$0] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [EAST, RED] -> [$1] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$8] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [$6] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$16] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$5] -> [SOUTH, RED] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: STORE, [EAST, RED], [$0] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [$1], [EAST, RED], [$0] (t=3, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [SOUTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [EAST, RED], [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$8] -> [$8], [EAST, RED], [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$2] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$3] (t=4, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [NORTH, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [EAST, RED], [WEST, RED], [$5], [$4], [NORTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [NORTH, RED], [WEST, RED], [$24], [$16], [EAST, RED] (t=5, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GEP, [$0], [$1] -> [SOUTH, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$5] -> [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: GEP, [$0], [$8] -> [WEST, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$24] -> [EAST, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [EAST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: ADD, [WEST, RED], [#1] -> [NORTH, RED], [$24] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$3], [$6] -> [$2], [$1] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: MUL, [SOUTH, RED], [WEST, RED] -> [EAST, RED] (t=8, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$8] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: NOT, [WEST, RED] -> [SOUTH, RED], [$5], [NORTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$16] -> [$16] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$4] -> [$1] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [EAST, RED] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$16], [$0] -> [$0] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$24], [NORTH, RED] -> [WEST, RED] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [NORTH, RED] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) @@ -1261,62 +560,103 @@ // ASM-NEXT: GEP, [$0] -> [SOUTH, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: NOT, [WEST, RED] -> [WEST, RED], [$3], [SOUTH, RED], [EAST, RED], [$0], [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$16] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { +// ASM-NEXT: PHI_START, [$8], [$24] -> [$8], [WEST, RED] (t=8, inv_iters=0) // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: ADD, [SOUTH, RED], [$0] -> [$2], [$0] (t=9, inv_iters=0) +// ASM-NEXT: ADD, [WEST, RED], [$0] -> [NORTH, RED], [$0] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$8] -> [WEST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [SOUTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [WEST, RED] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(3,1): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$24] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) // ASM: PE(0,2): // ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [SOUTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [EAST, RED] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM: PE(1,2): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: NOT, [SOUTH, RED] -> [$8], [NORTH, RED], [$16], [WEST, RED], [SOUTH, RED], [$24] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$16] -> [WEST, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [EAST, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(2,2): +// ASM-NEXT: ICMP_EQ, [SOUTH, RED], [#4] -> [$0], [$8], [$16] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$1] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: NOT, [$0] -> [WEST, RED], [SOUTH, RED], [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$2] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [NORTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$24] -> [EAST, RED] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [$1], [$0] (t=6, inv_iters=0) +// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [$8], [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$2] -> [SOUTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$2] (t=7, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$16] -> [SOUTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$16] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$3] -> [$0], [WEST, RED] (t=8, inv_iters=0) +// ASM-NEXT: PHI_START, [$8], [$24] -> [WEST, RED], [$0] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$2] -> [$3] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [$0] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$16] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$24] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM: PE(3,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM: PE(1,3): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [SOUTH, RED] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM: PE(2,3): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) diff --git a/test/e2e/histogram/histogram_kernel.mlir b/test/e2e/histogram/histogram_kernel.mlir index 11541b2a..31df6770 100644 --- a/test/e2e/histogram/histogram_kernel.mlir +++ b/test/e2e/histogram/histogram_kernel.mlir @@ -25,7 +25,8 @@ -// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f64 = dense<64> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// MAPPING-NEXT: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = neura.reserve {dfg_id = 1 : i32} : !neura.data // MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data @@ -49,7 +50,7 @@ // MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 37 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %21 = "neura.add"(%20) {dfg_id = 38 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 0 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data // MAPPING-NEXT: %22 = "neura.data_mov"(%21) {dfg_id = 39 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = "neura.data_mov"(%17) {dfg_id = 34 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 2001 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.data_mov"(%17) {dfg_id = 34 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: "neura.store"(%22, %23) {dfg_id = 40 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %24 = "neura.data_mov"(%3) {dfg_id = 5 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %25 = "neura.add"(%24) {dfg_id = 7 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data @@ -57,19 +58,19 @@ // MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "eq"}> {dfg_id = 12 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 20 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %28 = "neura.data_mov"(%27) {dfg_id = 16 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %29 = "neura.not"(%28) {dfg_id = 19 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = "neura.data_mov"(%25) {dfg_id = 9 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = "neura.data_mov"(%25) {dfg_id = 9 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %31 = "neura.data_mov"(%29) {dfg_id = 22 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %32 = neura.grant_predicate %30, %31 {dfg_id = 25 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %32 -> %1 {dfg_id = 27 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %33 = "neura.data_mov"(%27) {dfg_id = 14 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 15 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 15 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %35 = neura.grant_predicate %33, %34 {dfg_id = 18 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 21 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 21 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: neura.return_void %36 : !neura.data {dfg_id = 24 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 2 : i32} // MAPPING-NEXT: } // MAPPING-NEXT: } -// YAML: array_config: +// YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 // YAML-NEXT: compiled_ii: 5 @@ -92,9 +93,286 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 38 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 2 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 40 +// YAML-NEXT: time_step: 12 +// YAML-NEXT: invalid_iterations: 2 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "SEXT" +// YAML-NEXT: id: 31 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 33 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "3" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "MUL" +// YAML-NEXT: id: 20 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#5" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 26 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#-5" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DIV" +// YAML-NEXT: id: 29 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#18" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 13 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "6" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 15 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 18 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 2 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "RETURN_VOID" +// YAML-NEXT: id: 24 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 2 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 14 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "7" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 110001 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "10" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 25 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 4 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 7 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ICMP_EQ" +// YAML-NEXT: id: 12 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#20" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 19 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 150000 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "11" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" -// ASM: # Compiled II: 5 -// ASM: PE(2,0): +// ASM: # Compiled II: 5 +// ASM: PE(2,0): // ASM-NEXT: { // ASM-NEXT: LOAD, [$0] -> [$0] (t=10, inv_iters=2) // ASM-NEXT: } (idx_per_ii=0) @@ -102,14 +380,66 @@ // ASM-NEXT: ADD, [$0], [#1] -> [$0] (t=11, inv_iters=2) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$1] (t=12, inv_iters=2) +// ASM-NEXT: STORE, [$0], [$8] (t=12, inv_iters=2) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: SEXT, [EAST, RED] -> [$0] (t=8, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [$0], [$1] (t=9, inv_iters=1) +// ASM-NEXT: GEP, [$0] -> [$0], [$8] (t=9, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(3,0): +// ASM-NEXT: { +// ASM-NEXT: MUL, [$0], [#5] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#-5] -> [$0] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DIV, [$0], [#18] -> [WEST, RED] (t=7, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(2,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$16] (t=10, inv_iters=2) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [$16] (t=11, inv_iters=2) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(3,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(2,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [EAST, RED], [$0] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [$0], [#20] -> [$0], [SOUTH, RED], [$16] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$16] -> [SOUTH, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(3,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=0, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GEP, [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) // RUN: mlir-neura-opt %t-kernel.mlir --view-op-graph 2>&1 | sed -n '/^digraph G {/,/^}$/p' > histogram_kernel_original.dot // RUN: command -v dot >/dev/null && dot -Tpng histogram_kernel_original.dot -o histogram_kernel_original.png || true @@ -130,3 +460,67 @@ // RUN: FileCheck %s --input-file=histogram_kernel.dot -check-prefix=DOT // DOT: digraph G { +// DOT-NEXT: compound = true; +// DOT-NEXT: subgraph cluster_1 { +// DOT-NEXT: v2 [label = " ", shape = plain]; +// DOT-NEXT: label = "builtin.module : ()\n\ndlti.dl_spec: #dlti.dl_spec", shape = ellipse, style = filled]; +// DOT-NEXT: v15 [fillcolor = "0.222222 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v16 [fillcolor = "0.277778 1.0 1.0", label = "neura.mul : (!neura.data)\n\nrhs_value: 5 : i32", shape = ellipse, style = filled]; +// DOT-NEXT: v17 [fillcolor = "0.333333 1.0 1.0", label = "neura.add : (!neura.data)\n\nrhs_value: -5 : i32", shape = ellipse, style = filled]; +// DOT-NEXT: v18 [fillcolor = "0.388889 1.0 1.0", label = "neura.div : (!neura.data)\n\nrhs_value: 18 : i32", shape = ellipse, style = filled]; +// DOT-NEXT: v19 [fillcolor = "0.444444 1.0 1.0", label = "neura.sext : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v20 [fillcolor = "0.166667 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; +// DOT-NEXT: v21 [fillcolor = "0.222222 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v22 [fillcolor = "0.333333 1.0 1.0", label = "neura.add : (!neura.data)\n\nrhs_value: 1 : i32", shape = ellipse, style = filled]; +// DOT-NEXT: v23 [fillcolor = "0.500000 1.0 1.0", label = "neura.store : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v24 [fillcolor = "0.333333 1.0 1.0", label = "neura.add : (!neura.data)\n\nrhs_value: 1 : i64", shape = ellipse, style = filled]; +// DOT-NEXT: v25 [fillcolor = "0.555556 1.0 1.0", label = "neura.icmp : (!neura.data)\n\ncmpType: \"eq\"\nrhs_value: 20 : i64", shape = ellipse, style = filled]; +// DOT-NEXT: v26 [fillcolor = "0.611111 1.0 1.0", label = "neura.not : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v27 [fillcolor = "0.666667 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v28 [fillcolor = "0.722222 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v29 [fillcolor = "0.666667 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v30 [fillcolor = "0.777778 1.0 1.0", label = "neura.return_void : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v31 [fillcolor = "0.833333 1.0 1.0", label = "neura.yield : ()\n\noperandSegmentSizes: array", shape = ellipse, style = filled]; +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: v11 -> v13 [label = "0", style = solid]; +// DOT-NEXT: v12 -> v13 [label = "1", style = solid]; +// DOT-NEXT: v13 -> v14 [label = "", style = solid]; +// DOT-NEXT: v14 -> v15 [label = "", style = solid]; +// DOT-NEXT: v15 -> v16 [label = "", style = solid]; +// DOT-NEXT: v16 -> v17 [label = "", style = solid]; +// DOT-NEXT: v17 -> v18 [label = "", style = solid]; +// DOT-NEXT: v18 -> v19 [label = "", style = solid]; +// DOT-NEXT: v19 -> v20 [label = "", style = solid]; +// DOT-NEXT: v20 -> v21 [label = "", style = solid]; +// DOT-NEXT: v21 -> v22 [label = "", style = solid]; +// DOT-NEXT: v22 -> v23 [label = "0", style = solid]; +// DOT-NEXT: v20 -> v23 [label = "1", style = solid]; +// DOT-NEXT: v13 -> v24 [label = "", style = solid]; +// DOT-NEXT: v24 -> v25 [label = "", style = solid]; +// DOT-NEXT: v25 -> v26 [label = "", style = solid]; +// DOT-NEXT: v24 -> v27 [label = "0", style = solid]; +// DOT-NEXT: v26 -> v27 [label = "1", style = solid]; +// DOT-NEXT: v27 -> v28 [label = "0", style = solid]; +// DOT-NEXT: v12 -> v28 [label = "1", style = solid]; +// DOT-NEXT: v25 -> v29 [label = "0", style = solid]; +// DOT-NEXT: v25 -> v29 [label = "1", style = solid]; +// DOT-NEXT: v29 -> v30 [label = "", style = solid]; +// DOT-NEXT: } diff --git a/test/e2e/relu/relu_kernel.mlir b/test/e2e/relu/relu_kernel.mlir index cba4bce8..5b81ada0 100644 --- a/test/e2e/relu/relu_kernel.mlir +++ b/test/e2e/relu/relu_kernel.mlir @@ -32,51 +32,53 @@ // // Check the mapped MLIR contains key operations with full statements. // RUN: FileCheck %s --input-file=%t-mapping.mlir -check-prefix=MAPPING -// MAPPING: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data -// MAPPING: %3 = "neura.data_mov"(%1) {dfg_id = 6 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %4 = neura.phi_start %3, %2 {dfg_id = 8 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING: %5 = neura.reserve {dfg_id = 3 : i32} : !neura.data -// MAPPING: %6 = "neura.data_mov"(%0) {dfg_id = 5 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %7 = neura.phi_start %6, %5 {dfg_id = 7 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING: %8 = "neura.data_mov"(%7) {dfg_id = 11 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %9 = "neura.gep"(%8) <{operandSegmentSizes = array}> {dfg_id = 16 : i32, lhs_value = "%arg0", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %10 = "neura.data_mov"(%9) {dfg_id = 20 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %11 = "neura.load"(%10) {dfg_id = 22 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %12 = "neura.data_mov"(%11) {dfg_id = 27 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %13 = "neura.icmp"(%12) <{cmpType = "sge"}> {dfg_id = 30 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING: %14 = "neura.data_mov"(%13) {dfg_id = 34 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %15 = "neura.data_mov"(%11) {dfg_id = 26 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %16 = "neura.data_mov"(%4) {dfg_id = 13 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 29 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %17 = "neura.sel"(%14, %15, %16) {dfg_id = 38 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING: %18 = "neura.data_mov"(%7) {dfg_id = 10 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %19 = "neura.gep"(%18) <{operandSegmentSizes = array}> {dfg_id = 15 : i32, lhs_value = "%arg1", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %20 = "neura.data_mov"(%17) {dfg_id = 41 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %21 = "neura.data_mov"(%19) {dfg_id = 19 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 15 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: "neura.store"(%20, %21) {dfg_id = 42 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING: %22 = "neura.data_mov"(%7) {dfg_id = 9 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %23 = "neura.add"(%22) {dfg_id = 14 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING: %24 = "neura.data_mov"(%23) {dfg_id = 18 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 21 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data -// MAPPING: %26 = "neura.data_mov"(%25) {dfg_id = 25 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %27 = "neura.not"(%26) {dfg_id = 29 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %28 = "neura.data_mov"(%23) {dfg_id = 17 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %29 = "neura.data_mov"(%27) {dfg_id = 33 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %30 = neura.grant_predicate %28, %29 {dfg_id = 37 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING: neura.ctrl_mov %30 -> %5 {dfg_id = 40 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data -// MAPPING: %31 = "neura.data_mov"(%4) {dfg_id = 12 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %32 = "neura.data_mov"(%27) {dfg_id = 32 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 31 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %33 = neura.grant_predicate %31, %32 {dfg_id = 36 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING: neura.ctrl_mov %33 -> %2 {dfg_id = 39 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 8001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 8001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data -// MAPPING: %34 = "neura.data_mov"(%25) {dfg_id = 23 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %35 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: %36 = neura.grant_predicate %34, %35 {dfg_id = 28 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING: %37 = "neura.data_mov"(%36) {dfg_id = 31 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING: neura.return_void %37 : !neura.data {dfg_id = 35 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 3 : i32}]} -// MAPPING: neura.yield {dfg_id = 4 : i32} -// MAPPING: } -// MAPPING: } +// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, i64 = dense<64> : vector<2xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i16 = dense<16> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// MAPPING-NEXT: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data +// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 6 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %4 = neura.phi_start %3, %2 {dfg_id = 8 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %5 = neura.reserve {dfg_id = 3 : i32} : !neura.data +// MAPPING-NEXT: %6 = "neura.data_mov"(%0) {dfg_id = 5 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = neura.phi_start %6, %5 {dfg_id = 7 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 11 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.gep"(%8) <{operandSegmentSizes = array}> {dfg_id = 16 : i32, lhs_value = "%arg0", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 20 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.load"(%10) {dfg_id = 22 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%11) {dfg_id = 27 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = "neura.icmp"(%12) <{cmpType = "sge"}> {dfg_id = 30 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 34 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.data_mov"(%11) {dfg_id = 26 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 13 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 29 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %17 = "neura.sel"(%14, %15, %16) {dfg_id = 38 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.data_mov"(%7) {dfg_id = 10 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = "neura.gep"(%18) <{operandSegmentSizes = array}> {dfg_id = 15 : i32, lhs_value = "%arg1", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = "neura.data_mov"(%17) {dfg_id = 41 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = "neura.data_mov"(%19) {dfg_id = 19 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 15 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%20, %21) {dfg_id = 42 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %22 = "neura.data_mov"(%7) {dfg_id = 9 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.add"(%22) {dfg_id = 14 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 18 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 21 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 25 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 29 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 17 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 33 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 37 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 40 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 12 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 32 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 31 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 36 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %33 -> %2 {dfg_id = 39 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%25) {dfg_id = 23 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 28 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%36) {dfg_id = 31 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %37 : !neura.data {dfg_id = 35 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 3 : i32}]} +// MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} +// MAPPING-NEXT: } +// MAPPING-NEXT: } // YAML: array_config: // YAML-NEXT: columns: 4 @@ -101,6 +103,283 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "SEL" +// YAML-NEXT: id: 38 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 42 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 260001 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 340001 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "3" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ICMP_SGE" +// YAML-NEXT: id: 30 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 22 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 130002 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 190001 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "6" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 15 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 10 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "7" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 200001 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "8" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 120000 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 39 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 1 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 8 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "9" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 28 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 130001 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 36 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 23 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 // ASM: # Compiled II: 5 // ASM: PE(1,0): @@ -113,3 +392,88 @@ // ASM-NEXT: { // ASM-NEXT: STORE, [$0], [NORTH, RED] (t=8, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM: PE(3,0): +// ASM-NEXT: { +// ASM-NEXT: ICMP_SGE, [$0], [#0] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [$0], [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=7, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM: PE(2,1): +// ASM-NEXT: { +// ASM-NEXT: GEP, [$0] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM: PE(3,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(0,2): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=7, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$8] -> [EAST, RED], [$0] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(1,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [NORTH, RED] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [EAST, RED] -> [WEST, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(2,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$16] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [EAST, RED], [SOUTH, RED], [$0] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED], [$16] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$0], [$16] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$16] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(3,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=0, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GEP, [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM: PE(1,3): +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [SOUTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) diff --git a/test/e2e/spmv/spmv_kernel.mlir b/test/e2e/spmv/spmv_kernel.mlir index 6e268b0f..23f9dbaa 100644 --- a/test/e2e/spmv/spmv_kernel.mlir +++ b/test/e2e/spmv/spmv_kernel.mlir @@ -22,7 +22,8 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // -// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 15 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 9 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// MAPPING-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 15 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 9 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data @@ -30,7 +31,7 @@ // MAPPING-NEXT: %4 = "neura.icmp"(%3) <{cmpType = "sgt"}> {dfg_id = 14 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data // MAPPING-NEXT: %5 = "neura.data_mov"(%4) {dfg_id = 16 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %6 = "neura.grant_once"(%5) {dfg_id = 18 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = "neura.data_mov"(%4) {dfg_id = 15 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 290 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 290 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 290 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 290 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 290 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 290 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 290 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 290 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 290 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 290 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = "neura.data_mov"(%4) {dfg_id = 15 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 304 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 304 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 304 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 304 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 304 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 304 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 304 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 304 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 304 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 304 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 304 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %8 = "neura.not"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 19 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data @@ -38,24 +39,24 @@ // MAPPING-NEXT: %12 = "neura.data_mov"(%6) {dfg_id = 22 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 26 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %14 = "neura.data_mov"(%2) {dfg_id = 13 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.data_mov"(%6) {dfg_id = 21 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.data_mov"(%6) {dfg_id = 21 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%6) {dfg_id = 20 : i32, mapping_locs = [{id = 1003 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 2 : i32}, {id = 1003 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 3 : i32}, {id = 1003 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 4 : i32}, {id = 1003 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 5 : i32}, {id = 1003 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 1003 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 1003 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 1003 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 1003 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 1003 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 1003 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 1003 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 1003 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 1003 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 1003 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 1003 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 1003 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 1003 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%6) {dfg_id = 20 : i32, mapping_locs = [{id = 1024 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 2 : i32}, {id = 1024 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 3 : i32}, {id = 1024 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 4 : i32}, {id = 1024 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 1024 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 6 : i32}, {id = 1024 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 7 : i32}, {id = 1024 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 1024 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 1024 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 1024 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 1024 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 1024 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 1024 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 1024 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 1024 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}, {id = 1024 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 1024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 1024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %18 = "neura.not"(%17) {dfg_id = 24 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %19 = "neura.data_mov"(%10) {dfg_id = 27 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 29 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %20 = "neura.data_mov"(%18) {dfg_id = 28 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %21 = neura.grant_predicate %19, %20 {dfg_id = 34 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%13) {dfg_id = 33 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%13) {dfg_id = 33 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %23 = neura.zext %22 {dfg_id = 36 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 42 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 42 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %25 = "neura.and"(%24) {dfg_id = 46 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %26 = "neura.data_mov"(%13) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "ult"}> {dfg_id = 35 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 4 : i32} : (!neura.data) -> !neura.data // MAPPING-NEXT: %28 = "neura.data_mov"(%16) {dfg_id = 31 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 1000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 1000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 1008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 45 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%16) {dfg_id = 30 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 11 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 4 : i32}, {id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 5 : i32}, {id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 3 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 3 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%16) {dfg_id = 30 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 11 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 16 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 4 : i32}, {id = 24 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 6 : i32}, {id = 24 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 7 : i32}, {id = 24 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 24 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 24 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 44 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 38 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %35 = "neura.not"(%34) {dfg_id = 43 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data @@ -68,7 +69,7 @@ // MAPPING-NEXT: %42 = "neura.data_mov"(%38) {dfg_id = 59 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %43 = "neura.and"(%42) {dfg_id = 66 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 2147483644 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %44 = neura.reserve {dfg_id = 3 : i32} : !neura.data -// MAPPING-NEXT: %45 = "neura.data_mov"(%41) {dfg_id = 58 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %45 = "neura.data_mov"(%41) {dfg_id = 58 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %46 = neura.phi_start %45, %44 {dfg_id = 65 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %47 = neura.reserve {dfg_id = 4 : i32} : !neura.data // MAPPING-NEXT: %48 = "neura.data_mov"(%43) {dfg_id = 79 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data @@ -79,39 +80,39 @@ // MAPPING-NEXT: %53 = neura.reserve {dfg_id = 6 : i32} : !neura.data // MAPPING-NEXT: %54 = "neura.data_mov"(%41) {dfg_id = 56 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %55 = neura.phi_start %54, %53 {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %56 = "neura.data_mov"(%55) {dfg_id = 75 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 20 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %56 = "neura.data_mov"(%55) {dfg_id = 75 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 20 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %57 = "neura.gep"(%56) <{operandSegmentSizes = array}> {dfg_id = 90 : i32, lhs_value = "%arg1", mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%57) {dfg_id = 107 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 19 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %59 = "neura.load"(%58) {dfg_id = 124 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %60 = "neura.data_mov"(%55) {dfg_id = 74 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 163 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 163 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 163 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 163 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 163 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%57) {dfg_id = 107 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %59 = "neura.load"(%58) {dfg_id = 124 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %60 = "neura.data_mov"(%55) {dfg_id = 74 : i32, mapping_locs = [{id = 184 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 184 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 184 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 184 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 184 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 184 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %61 = "neura.gep"(%60) <{operandSegmentSizes = array}> {dfg_id = 89 : i32, lhs_value = "%arg2", mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %62 = "neura.data_mov"(%61) {dfg_id = 106 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %63 = "neura.load"(%62) {dfg_id = 123 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %64 = "neura.data_mov"(%63) {dfg_id = 137 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %65 = neura.sext %64 {dfg_id = 154 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%65) {dfg_id = 168 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.gep"(%66) <{operandSegmentSizes = array}> {dfg_id = 182 : i32, lhs_value = "%arg4", mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %68 = "neura.data_mov"(%67) {dfg_id = 197 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%65) {dfg_id = 168 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.gep"(%66) <{operandSegmentSizes = array}> {dfg_id = 182 : i32, lhs_value = "%arg4", mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %68 = "neura.data_mov"(%67) {dfg_id = 197 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 8008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %69 = "neura.load"(%68) {dfg_id = 211 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 224 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %71 = "neura.data_mov"(%59) {dfg_id = 138 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.mul"(%70, %71) {dfg_id = 233 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %73 = "neura.data_mov"(%55) {dfg_id = 73 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4003 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 4003 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 4003 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 4003 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 4003 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 4003 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 224 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %71 = "neura.data_mov"(%59) {dfg_id = 138 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.mul"(%70, %71) {dfg_id = 233 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %73 = "neura.data_mov"(%55) {dfg_id = 73 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4024 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 4024 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 4024 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 4024 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 4024 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 4024 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %74 = "neura.gep"(%73) <{operandSegmentSizes = array}> {dfg_id = 88 : i32, lhs_value = "%arg3", mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %75 = "neura.data_mov"(%74) {dfg_id = 105 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %76 = "neura.load"(%75) {dfg_id = 122 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %77 = "neura.data_mov"(%76) {dfg_id = 136 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %78 = neura.sext %77 {dfg_id = 153 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %79 = "neura.data_mov"(%78) {dfg_id = 167 : i32, mapping_locs = [{id = 12001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 12001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %79 = "neura.data_mov"(%78) {dfg_id = 167 : i32, mapping_locs = [{id = 12008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 12008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %80 = "neura.gep"(%79) <{operandSegmentSizes = array}> {dfg_id = 181 : i32, lhs_value = "%arg5", mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%80) {dfg_id = 196 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 8001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.load"(%81) {dfg_id = 210 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = "neura.data_mov"(%82) {dfg_id = 223 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %84 = "neura.data_mov"(%72) {dfg_id = 242 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %85 = "neura.add"(%83, %84) {dfg_id = 251 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%85) {dfg_id = 260 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %87 = "neura.data_mov"(%80) {dfg_id = 195 : i32, mapping_locs = [{id = 12003 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 39 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8004 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 21 : i32}, {id = 8004 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 22 : i32}, {id = 8004 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 23 : i32}, {id = 8004 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 270 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %81 = "neura.data_mov"(%80) {dfg_id = 196 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 8000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.load"(%81) {dfg_id = 210 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = "neura.data_mov"(%82) {dfg_id = 223 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}, {id = 24 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %84 = "neura.data_mov"(%72) {dfg_id = 242 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %85 = "neura.add"(%83, %84) {dfg_id = 251 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%85) {dfg_id = 260 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %87 = "neura.data_mov"(%80) {dfg_id = 195 : i32, mapping_locs = [{id = 12024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 12000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 39 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 8016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 8016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 8016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 8016 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 8016 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 270 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 27 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %88 = "neura.data_mov"(%55) {dfg_id = 72 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %89 = "neura.or"(%88) {dfg_id = 87 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 104 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 416 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data @@ -126,33 +127,33 @@ // MAPPING-NEXT: %99 = neura.sext %98 {dfg_id = 180 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data // MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 194 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 12000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 209 : i32, lhs_value = "%arg4", mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 222 : i32, mapping_locs = [{id = 12002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 12002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 12002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 222 : i32, mapping_locs = [{id = 12016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 12016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 12016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %103 = "neura.load"(%102) {dfg_id = 232 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %104 = "neura.data_mov"(%103) {dfg_id = 241 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 12000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %105 = "neura.data_mov"(%93) {dfg_id = 166 : i32, mapping_locs = [{id = 12003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 12003 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 12003 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %105 = "neura.data_mov"(%93) {dfg_id = 166 : i32, mapping_locs = [{id = 12024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}, {id = 12024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 12024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %106 = "neura.mul"(%104, %105) {dfg_id = 250 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %107 = "neura.data_mov"(%89) {dfg_id = 102 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %107 = "neura.data_mov"(%89) {dfg_id = 102 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %108 = "neura.gep"(%107) <{operandSegmentSizes = array}> {dfg_id = 119 : i32, lhs_value = "%arg3", mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %109 = "neura.data_mov"(%108) {dfg_id = 133 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %110 = "neura.load"(%109) {dfg_id = 150 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %111 = "neura.data_mov"(%110) {dfg_id = 164 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %112 = neura.sext %111 {dfg_id = 179 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 193 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %114 = "neura.gep"(%113) <{operandSegmentSizes = array}> {dfg_id = 208 : i32, lhs_value = "%arg5", mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 221 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 8002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 8002 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = "neura.load"(%115) {dfg_id = 231 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %117 = "neura.data_mov"(%116) {dfg_id = 240 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %118 = "neura.data_mov"(%106) {dfg_id = 259 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %119 = "neura.add"(%117, %118) {dfg_id = 269 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %120 = "neura.data_mov"(%119) {dfg_id = 277 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %121 = "neura.data_mov"(%114) {dfg_id = 220 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 40 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 12002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 12002 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 12002 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 12002 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%120, %121) {dfg_id = 286 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %122 = "neura.data_mov"(%55) {dfg_id = 71 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 193 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %114 = "neura.gep"(%113) <{operandSegmentSizes = array}> {dfg_id = 208 : i32, lhs_value = "%arg5", mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 221 : i32, mapping_locs = [{id = 416 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 40 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 12016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 12016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 12016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = "neura.load"(%115) {dfg_id = 231 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %117 = "neura.data_mov"(%116) {dfg_id = 240 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %118 = "neura.data_mov"(%106) {dfg_id = 259 : i32, mapping_locs = [{id = 12008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 12008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %119 = "neura.add"(%117, %118) {dfg_id = 269 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %120 = "neura.data_mov"(%119) {dfg_id = 277 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %121 = "neura.data_mov"(%114) {dfg_id = 220 : i32, mapping_locs = [{id = 41 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 43 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 416 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 40 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 12024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 12024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 12024 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%120, %121) {dfg_id = 286 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %122 = "neura.data_mov"(%55) {dfg_id = 71 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 200 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %123 = "neura.or"(%122) {dfg_id = 86 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 2 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %124 = "neura.data_mov"(%123) {dfg_id = 101 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 23 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 352 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 352 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %125 = "neura.gep"(%124) <{operandSegmentSizes = array}> {dfg_id = 118 : i32, lhs_value = "%arg1", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 132 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %127 = "neura.load"(%126) {dfg_id = 149 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 132 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %127 = "neura.load"(%126) {dfg_id = 149 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %128 = "neura.data_mov"(%123) {dfg_id = 100 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %129 = "neura.gep"(%128) <{operandSegmentSizes = array}> {dfg_id = 117 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %130 = "neura.data_mov"(%129) {dfg_id = 131 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data @@ -161,12 +162,12 @@ // MAPPING-NEXT: %133 = neura.sext %132 {dfg_id = 178 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data // MAPPING-NEXT: %134 = "neura.data_mov"(%133) {dfg_id = 192 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %135 = "neura.gep"(%134) <{operandSegmentSizes = array}> {dfg_id = 207 : i32, lhs_value = "%arg4", mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %136 = "neura.data_mov"(%135) {dfg_id = 219 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %136 = "neura.data_mov"(%135) {dfg_id = 219 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %137 = "neura.load"(%136) {dfg_id = 230 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %138 = "neura.data_mov"(%137) {dfg_id = 239 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %139 = "neura.data_mov"(%127) {dfg_id = 163 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %140 = "neura.mul"(%138, %139) {dfg_id = 249 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %141 = "neura.data_mov"(%123) {dfg_id = 99 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %138 = "neura.data_mov"(%137) {dfg_id = 239 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %139 = "neura.data_mov"(%127) {dfg_id = 163 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %140 = "neura.mul"(%138, %139) {dfg_id = 249 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %141 = "neura.data_mov"(%123) {dfg_id = 99 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %142 = "neura.gep"(%141) <{operandSegmentSizes = array}> {dfg_id = 116 : i32, lhs_value = "%arg3", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %143 = "neura.data_mov"(%142) {dfg_id = 130 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 22 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 147 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data @@ -174,19 +175,19 @@ // MAPPING-NEXT: %146 = neura.sext %145 {dfg_id = 177 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data -> !neura.data // MAPPING-NEXT: %147 = "neura.data_mov"(%146) {dfg_id = 191 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 206 : i32, lhs_value = "%arg5", mapping_locs = [{id = 7 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 218 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 3001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 3001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 3001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 3001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 229 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %151 = "neura.data_mov"(%150) {dfg_id = 238 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %152 = "neura.data_mov"(%140) {dfg_id = 258 : i32, mapping_locs = [{id = 3003 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 3003 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 3003 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %153 = "neura.add"(%151, %152) {dfg_id = 268 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %154 = "neura.data_mov"(%153) {dfg_id = 276 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %155 = "neura.data_mov"(%148) {dfg_id = 217 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 22 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 3004 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 21 : i32}, {id = 3004 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 22 : i32}, {id = 3004 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 23 : i32}, {id = 3004 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 24 : i32}, {id = 3004 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%154, %155) {dfg_id = 285 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %156 = "neura.data_mov"(%55) {dfg_id = 70 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1002 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 1002 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 1002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 1002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 218 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 3008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 3008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 3008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 229 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %151 = "neura.data_mov"(%150) {dfg_id = 238 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %152 = "neura.data_mov"(%140) {dfg_id = 258 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 2000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %153 = "neura.add"(%151, %152) {dfg_id = 268 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %154 = "neura.data_mov"(%153) {dfg_id = 276 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %155 = "neura.data_mov"(%148) {dfg_id = 217 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 22 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 3000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 3000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 3000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}, {id = 3000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%154, %155) {dfg_id = 285 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %156 = "neura.data_mov"(%55) {dfg_id = 70 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 1016 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 1016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 1016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %157 = "neura.or"(%156) {dfg_id = 85 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %158 = "neura.data_mov"(%157) {dfg_id = 98 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 14 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 18 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %159 = "neura.gep"(%158) <{operandSegmentSizes = array}> {dfg_id = 115 : i32, lhs_value = "%arg1", mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %160 = "neura.data_mov"(%159) {dfg_id = 129 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 3001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 3001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %160 = "neura.data_mov"(%159) {dfg_id = 129 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 3008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 3008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %161 = "neura.load"(%160) {dfg_id = 146 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %162 = "neura.data_mov"(%157) {dfg_id = 97 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %163 = "neura.gep"(%162) <{operandSegmentSizes = array}> {dfg_id = 114 : i32, lhs_value = "%arg2", mapping_locs = [{id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data @@ -198,9 +199,9 @@ // MAPPING-NEXT: %169 = "neura.gep"(%168) <{operandSegmentSizes = array}> {dfg_id = 205 : i32, lhs_value = "%arg4", mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %170 = "neura.data_mov"(%169) {dfg_id = 216 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %171 = "neura.load"(%170) {dfg_id = 228 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 237 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 160 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 2002 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %174 = "neura.mul"(%172, %173) {dfg_id = 248 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 237 : i32, mapping_locs = [{id = 1016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 160 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %174 = "neura.mul"(%172, %173) {dfg_id = 248 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %175 = "neura.data_mov"(%157) {dfg_id = 96 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %176 = "neura.gep"(%175) <{operandSegmentSizes = array}> {dfg_id = 113 : i32, lhs_value = "%arg3", mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %177 = "neura.data_mov"(%176) {dfg_id = 127 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data @@ -209,14 +210,14 @@ // MAPPING-NEXT: %180 = neura.sext %179 {dfg_id = 175 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 0 : i32}]} : !neura.data -> !neura.data // MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 189 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %182 = "neura.gep"(%181) <{operandSegmentSizes = array}> {dfg_id = 204 : i32, lhs_value = "%arg5", mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %183 = "neura.data_mov"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 3002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 3002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 3002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 3002 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %184 = "neura.load"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %185 = "neura.data_mov"(%184) {dfg_id = 236 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 2000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %186 = "neura.data_mov"(%174) {dfg_id = 257 : i32, mapping_locs = [{id = 2002 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 2002 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %187 = "neura.add"(%185, %186) {dfg_id = 267 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %188 = "neura.data_mov"(%187) {dfg_id = 275 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %189 = "neura.data_mov"(%182) {dfg_id = 214 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 2004 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 20 : i32}, {id = 2004 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 21 : i32}, {id = 2004 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 22 : i32}, {id = 2004 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 23 : i32}, {id = 2004 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 24 : i32}, {id = 2004 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%188, %189) {dfg_id = 284 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %183 = "neura.data_mov"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 3016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 3016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 3016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %184 = "neura.load"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %185 = "neura.data_mov"(%184) {dfg_id = 236 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %186 = "neura.data_mov"(%174) {dfg_id = 257 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %187 = "neura.add"(%185, %186) {dfg_id = 267 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %188 = "neura.data_mov"(%187) {dfg_id = 275 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %189 = "neura.data_mov"(%182) {dfg_id = 214 : i32, mapping_locs = [{id = 3024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 3024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}, {id = 3024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 3024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 3024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%188, %189) {dfg_id = 284 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %190 = "neura.data_mov"(%55) {dfg_id = 69 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %191 = "neura.add"(%190) {dfg_id = 84 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %192 = "neura.data_mov"(%52) {dfg_id = 76 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data @@ -226,49 +227,49 @@ // MAPPING-NEXT: %196 = "neura.icmp"(%194, %195) <{cmpType = "eq"}> {dfg_id = 125 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %197 = "neura.data_mov"(%196) {dfg_id = 141 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %198 = "neura.not"(%197) {dfg_id = 157 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %199 = "neura.data_mov"(%191) {dfg_id = 95 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 291 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 291 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 291 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 291 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 291 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 291 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 291 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 291 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 291 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 291 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %200 = "neura.data_mov"(%198) {dfg_id = 174 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 292 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 292 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 292 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 292 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}, {id = 292 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}, {id = 292 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}, {id = 292 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 18 : i32}, {id = 292 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 19 : i32}, {id = 292 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 188 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %201 -> %53 {dfg_id = 203 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %199 = "neura.data_mov"(%191) {dfg_id = 95 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 30 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 424 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 424 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 424 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 424 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 424 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 424 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 424 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 424 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 424 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 424 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %200 = "neura.data_mov"(%198) {dfg_id = 174 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 30 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 432 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 432 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 432 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 432 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 432 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 432 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 432 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 432 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 188 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %201 -> %53 {dfg_id = 203 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 29 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %202 = "neura.data_mov"(%193) {dfg_id = 108 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %203 = "neura.data_mov"(%198) {dfg_id = 173 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %204 = neura.grant_predicate %202, %203 {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %204 -> %50 {dfg_id = 202 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 162 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 162 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 162 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 162 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 162 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 162 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 162 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 162 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 162 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %204 -> %50 {dfg_id = 202 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 176 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 176 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 176 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 176 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 176 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %205 = "neura.data_mov"(%49) {dfg_id = 110 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %206 = "neura.data_mov"(%198) {dfg_id = 172 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %207 = neura.grant_predicate %205, %206 {dfg_id = 186 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %207 -> %47 {dfg_id = 201 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 2 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %208 = "neura.data_mov"(%46) {dfg_id = 78 : i32, mapping_locs = [{id = 4005 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 12 : i32}, {id = 4005 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 13 : i32}, {id = 4005 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 14 : i32}, {id = 4005 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 15 : i32}, {id = 4005 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 16 : i32}, {id = 4005 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 17 : i32}, {id = 4005 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 18 : i32}, {id = 4005 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 19 : i32}, {id = 4005 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 20 : i32}, {id = 4005 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 21 : i32}, {id = 4005 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = "neura.data_mov"(%198) {dfg_id = 171 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4006 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 12 : i32}, {id = 4006 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 13 : i32}, {id = 4006 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 14 : i32}, {id = 4006 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 15 : i32}, {id = 4006 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 16 : i32}, {id = 4006 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 17 : i32}, {id = 4006 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 18 : i32}, {id = 4006 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 19 : i32}, {id = 4006 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 20 : i32}, {id = 4006 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 21 : i32}, {id = 4006 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 185 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %210 -> %44 {dfg_id = 200 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}, {id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}, {id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %211 = "neura.data_mov"(%191) {dfg_id = 94 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %212 = "neura.data_mov"(%196) {dfg_id = 140 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 162 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %207 -> %47 {dfg_id = 201 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 16 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %208 = "neura.data_mov"(%46) {dfg_id = 78 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 312 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 312 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 312 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}, {id = 312 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 312 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 312 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 312 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = "neura.data_mov"(%198) {dfg_id = 171 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 12 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 25 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 185 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %210 -> %44 {dfg_id = 200 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 25 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}, {id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}, {id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %211 = "neura.data_mov"(%191) {dfg_id = 94 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %212 = "neura.data_mov"(%196) {dfg_id = 140 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 156 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %214 = "neura.data_mov"(%46) {dfg_id = 77 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %215 = "neura.data_mov"(%196) {dfg_id = 139 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %214 = "neura.data_mov"(%46) {dfg_id = 77 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %215 = "neura.data_mov"(%196) {dfg_id = 139 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 4016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 155 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %217 = "neura.data_mov"(%33) {dfg_id = 49 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %218 = "neura.data_mov"(%216) {dfg_id = 169 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %219 = "neura.phi"(%217, %218) {dfg_id = 183 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %220 = "neura.data_mov"(%30) {dfg_id = 50 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %221 = "neura.data_mov"(%213) {dfg_id = 170 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %221 = "neura.data_mov"(%213) {dfg_id = 170 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %222 = "neura.phi"(%220, %221) {dfg_id = 184 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %223 = "neura.data_mov"(%25) {dfg_id = 52 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %224 = "neura.icmp"(%223) <{cmpType = "eq"}> {dfg_id = 55 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %225 = "neura.data_mov"(%224) {dfg_id = 61 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 1004 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 1004 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 1004 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 1004 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 1004 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}, {id = 1004 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}, {id = 1004 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}, {id = 1004 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 18 : i32}, {id = 1004 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 19 : i32}, {id = 1004 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 20 : i32}, {id = 1004 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %226 = "neura.data_mov"(%224) {dfg_id = 62 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1005 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 12 : i32}, {id = 1005 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 13 : i32}, {id = 1005 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 14 : i32}, {id = 1005 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 15 : i32}, {id = 1005 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 16 : i32}, {id = 1005 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 17 : i32}, {id = 1005 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 18 : i32}, {id = 1005 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 19 : i32}, {id = 1005 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 20 : i32}, {id = 1005 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 68 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %225 = "neura.data_mov"(%224) {dfg_id = 61 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 8016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 8016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 8016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 8016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 8016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 8016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 8016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 8016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 8016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 8016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %226 = "neura.data_mov"(%224) {dfg_id = 62 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 3 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8024 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 8024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 8024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 8024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}, {id = 8024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 68 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %228 = "neura.data_mov"(%224) {dfg_id = 60 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %229 = "neura.not"(%228) {dfg_id = 67 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %230 = "neura.data_mov"(%222) {dfg_id = 199 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %231 = "neura.data_mov"(%229) {dfg_id = 82 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 213 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %233 = "neura.data_mov"(%219) {dfg_id = 198 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %234 = "neura.data_mov"(%229) {dfg_id = 81 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %234 = "neura.data_mov"(%229) {dfg_id = 81 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 212 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %236 = "neura.data_mov"(%25) {dfg_id = 51 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4004 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 10 : i32}, {id = 4004 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 4004 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 4004 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 4004 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 4004 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}, {id = 4004 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %237 = "neura.data_mov"(%229) {dfg_id = 80 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %236 = "neura.data_mov"(%25) {dfg_id = 51 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %237 = "neura.data_mov"(%229) {dfg_id = 80 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 0 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 4016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 4016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 4016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %238 = neura.grant_predicate %236, %237 {dfg_id = 93 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %239 = neura.reserve {dfg_id = 7 : i32} : !neura.data // MAPPING-NEXT: %240 = "neura.data_mov"(%238) {dfg_id = 112 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data @@ -279,9 +280,9 @@ // MAPPING-NEXT: %245 = neura.reserve {dfg_id = 9 : i32} : !neura.data // MAPPING-NEXT: %246 = "neura.data_mov"(%232) {dfg_id = 226 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %247 = neura.phi_start %246, %245 {dfg_id = 235 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %248 = "neura.data_mov"(%247) {dfg_id = 247 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 30 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %248 = "neura.data_mov"(%247) {dfg_id = 247 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 30 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %249 = "neura.gep"(%248) <{operandSegmentSizes = array}> {dfg_id = 256 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %250 = "neura.data_mov"(%249) {dfg_id = 266 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 12001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 12001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 12001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %250 = "neura.data_mov"(%249) {dfg_id = 266 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 12008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 12008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 12008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %251 = "neura.load"(%250) {dfg_id = 274 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %252 = "neura.data_mov"(%247) {dfg_id = 246 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %253 = "neura.gep"(%252) <{operandSegmentSizes = array}> {dfg_id = 255 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data @@ -291,27 +292,27 @@ // MAPPING-NEXT: %257 = neura.sext %256 {dfg_id = 290 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data -> !neura.data // MAPPING-NEXT: %258 = "neura.data_mov"(%257) {dfg_id = 296 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %259 = "neura.gep"(%258) <{operandSegmentSizes = array}> {dfg_id = 302 : i32, lhs_value = "%arg4", mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %260 = "neura.data_mov"(%259) {dfg_id = 309 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 2001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 2001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %261 = "neura.load"(%260) {dfg_id = 312 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %262 = "neura.data_mov"(%261) {dfg_id = 314 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %263 = "neura.data_mov"(%251) {dfg_id = 283 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 42 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 289 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %264 = "neura.mul"(%262, %263) {dfg_id = 315 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %260 = "neura.data_mov"(%259) {dfg_id = 309 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %261 = "neura.load"(%260) {dfg_id = 312 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %262 = "neura.data_mov"(%261) {dfg_id = 314 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 23 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 37 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 480 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %263 = "neura.data_mov"(%251) {dfg_id = 283 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 41 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 44 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %264 = "neura.mul"(%262, %263) {dfg_id = 315 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 3 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %265 = "neura.data_mov"(%247) {dfg_id = 245 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %266 = "neura.gep"(%265) <{operandSegmentSizes = array}> {dfg_id = 254 : i32, lhs_value = "%arg3", mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %267 = "neura.data_mov"(%266) {dfg_id = 264 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %268 = "neura.load"(%267) {dfg_id = 272 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %269 = "neura.data_mov"(%268) {dfg_id = 281 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %270 = neura.sext %269 {dfg_id = 289 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %271 = "neura.data_mov"(%270) {dfg_id = 295 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %272 = "neura.gep"(%271) <{operandSegmentSizes = array}> {dfg_id = 301 : i32, lhs_value = "%arg5", mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %273 = "neura.data_mov"(%272) {dfg_id = 308 : i32, mapping_locs = [{id = 8003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 8003 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 8003 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 8003 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %269 = "neura.data_mov"(%268) {dfg_id = 281 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %270 = neura.sext %269 {dfg_id = 289 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %271 = "neura.data_mov"(%270) {dfg_id = 295 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %272 = "neura.gep"(%271) <{operandSegmentSizes = array}> {dfg_id = 301 : i32, lhs_value = "%arg5", mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %273 = "neura.data_mov"(%272) {dfg_id = 308 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %274 = "neura.load"(%273) {dfg_id = 311 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %275 = "neura.data_mov"(%274) {dfg_id = 313 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}, {id = 8000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %276 = "neura.data_mov"(%264) {dfg_id = 316 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %277 = "neura.add"(%275, %276) {dfg_id = 317 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %278 = "neura.data_mov"(%277) {dfg_id = 318 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %279 = "neura.data_mov"(%272) {dfg_id = 307 : i32, mapping_locs = [{id = 8005 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 20 : i32}, {id = 8005 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 21 : i32}, {id = 8005 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 22 : i32}, {id = 8005 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 23 : i32}, {id = 8005 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 24 : i32}, {id = 8005 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 25 : i32}, {id = 8005 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%278, %279) {dfg_id = 319 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 27 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %275 = "neura.data_mov"(%274) {dfg_id = 313 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 38 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 416 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %276 = "neura.data_mov"(%264) {dfg_id = 316 : i32, mapping_locs = [{id = 46 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 43 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 26 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %277 = "neura.add"(%275, %276) {dfg_id = 317 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 27 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %278 = "neura.data_mov"(%277) {dfg_id = 318 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 27 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %279 = "neura.data_mov"(%272) {dfg_id = 307 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 34 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 43 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 40 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 12016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 12016 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 12016 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}, {id = 12016 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 27 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%278, %279) {dfg_id = 319 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 28 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %280 = "neura.data_mov"(%247) {dfg_id = 244 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %281 = "neura.add"(%280) {dfg_id = 253 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %282 = "neura.data_mov"(%244) {dfg_id = 243 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data @@ -321,29 +322,6 @@ // MAPPING-NEXT: %286 = "neura.icmp"(%284, %285) <{cmpType = "eq"}> {dfg_id = 271 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %287 = "neura.data_mov"(%286) {dfg_id = 280 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %288 = "neura.not"(%287) {dfg_id = 288 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %289 = "neura.data_mov"(%281) {dfg_id = 263 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 196 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}, {id = 196 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 18 : i32}, {id = 196 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 19 : i32}, {id = 196 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 20 : i32}, {id = 196 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 21 : i32}, {id = 196 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 22 : i32}, {id = 196 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %290 = "neura.data_mov"(%288) {dfg_id = 294 : i32, mapping_locs = [{id = 197 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 20 : i32}, {id = 197 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 21 : i32}, {id = 197 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 22 : i32}, {id = 197 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %291 = neura.grant_predicate %289, %290 {dfg_id = 300 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %291 -> %245 {dfg_id = 306 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 166 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 25 : i32}, {id = 166 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 26 : i32}, {id = 166 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 27 : i32}, {id = 166 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 28 : i32}, {id = 166 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %292 = "neura.data_mov"(%283) {dfg_id = 261 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %293 = "neura.data_mov"(%288) {dfg_id = 293 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %294 = neura.grant_predicate %292, %293 {dfg_id = 299 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %294 -> %242 {dfg_id = 305 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 29 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 165 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 23 : i32}, {id = 165 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 24 : i32}, {id = 165 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 25 : i32}, {id = 165 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 26 : i32}, {id = 165 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 27 : i32}, {id = 165 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 28 : i32}, {id = 165 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 29 : i32}, {id = 165 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 30 : i32}, {id = 165 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %295 = "neura.data_mov"(%241) {dfg_id = 142 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 14 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %296 = "neura.data_mov"(%288) {dfg_id = 292 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 195 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %297 = neura.grant_predicate %295, %296 {dfg_id = 298 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %297 -> %239 {dfg_id = 304 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 164 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 23 : i32}, {id = 164 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 24 : i32}, {id = 164 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 25 : i32}, {id = 164 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 26 : i32}, {id = 164 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 27 : i32}, {id = 164 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 28 : i32}, {id = 164 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 29 : i32}, {id = 164 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 30 : i32}, {id = 164 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 31 : i32}, {id = 164 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %298 = "neura.data_mov"(%286) {dfg_id = 278 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %299 = "neura.data_mov"(%286) {dfg_id = 279 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 194 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %300 = neura.grant_predicate %298, %299 {dfg_id = 287 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %301 = "neura.data_mov"(%21) {dfg_id = 37 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 19 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 2000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %302 = "neura.data_mov"(%227) {dfg_id = 83 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 2001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %303 = "neura.data_mov"(%300) {dfg_id = 291 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 2003 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 2003 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %304 = "neura.phi"(%301, %302, %303) {dfg_id = 297 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %305 = "neura.data_mov"(%304) {dfg_id = 303 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %305 : !neura.data {dfg_id = 310 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 1 : i32}]} -// MAPPING-NEXT: neura.yield {dfg_id = 10 : i32} -// MAPPING-NEXT: } // YAML: array_config: @@ -366,7 +344,7 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" @@ -427,7 +405,7 @@ // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" @@ -445,7 +423,7 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" +// YAML-NEXT: - operand: "$24" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" @@ -456,10 +434,10 @@ // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" @@ -500,7 +478,7 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" @@ -515,7 +493,7 @@ // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 9 // YAML-NEXT: operations: @@ -524,2759 +502,134 @@ // YAML-NEXT: time_step: 9 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "#3" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1100000 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 55 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 67 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 620000 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 800000 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 44 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 201 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI" -// YAML-NEXT: id: 183 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SGT" -// YAML-NEXT: id: 14 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2250001 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 18 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 159 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 150002 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 176 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 205 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 40 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 24 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 31 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 228 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1380001 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 68 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3140001 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 70 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1110001 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 45 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 110 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 61 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 186 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 62 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "OR" -// YAML-NEXT: id: 85 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 114 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 113 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 131 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 148 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 273 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 290 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 302 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 107 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 124 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 219 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 214 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 230 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 160 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 312 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 237 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 291 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 248 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 37 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 83 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI" -// YAML-NEXT: id: 297 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 236 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 267 -// YAML-NEXT: time_step: 25 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 284 -// YAML-NEXT: time_step: 26 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 96 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "3" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 144 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 147 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 175 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 129 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 204 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 132 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 146 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 218 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 149 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 217 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 249 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 227 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 229 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 268 -// YAML-NEXT: time_step: 25 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 285 -// YAML-NEXT: time_step: 26 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "4" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 88 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 106 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 123 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 93 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 154 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 182 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 53 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 300001 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 560000 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 185 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 73 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 51 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 139 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 65 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 171 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 82 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 155 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 80 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 213 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 235 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 253 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2470000 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 234 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 21 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 126 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 2 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 150003 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1420000 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 25 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 300000 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 34 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 64 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1380002 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 203 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 63 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 305 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 304 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 84 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 750000 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 109 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3140002 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 125 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 950000 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 306 -// YAML-NEXT: time_step: 25 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 157 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 50 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 156 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI" -// YAML-NEXT: id: 184 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 202 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 89 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 980001 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 116 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 255 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 980002 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 178 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 263 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 252 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1070001 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 271 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2190001 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 288 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 142 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 287 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 298 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 370001 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 91 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 71 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 300 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 750001 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 310 -// YAML-NEXT: time_step: 25 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 187 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "OR" -// YAML-NEXT: id: 86 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 117 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1300001 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 115 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 177 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1320001 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 206 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2170000 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1010001 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 151 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 122 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 133 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 150 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 264 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 272 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 289 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 301 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 197 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 196 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 221 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 211 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 195 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 210 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 231 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 311 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 270 -// YAML-NEXT: time_step: 25 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 317 -// YAML-NEXT: time_step: 26 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 319 -// YAML-NEXT: time_step: 27 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 119 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 254 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 17 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2470001 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 179 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 208 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 15 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 270001 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 188 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 224 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 3050001 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 233 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 223 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 72 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 251 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 283 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 315 -// YAML-NEXT: time_step: 25 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 95 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 174 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "OR" -// YAML-NEXT: id: 87 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 120 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 90 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 207 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 19 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 23 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 261 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 299 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 75 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "11" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 101 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 118 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "12" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 180 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 153 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 209 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 135 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 181 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 266 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 152 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1950000 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 232 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 220 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 274 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: id: 1100000 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 +// YAML-NEXT: - index_per_ii: 10 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 250 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "ICMP_EQ" +// YAML-NEXT: id: 55 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" +// YAML-NEXT: - operand: "#0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 269 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 510000 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 +// YAML-NEXT: - index_per_ii: 11 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 286 -// YAML-NEXT: time_step: 25 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 67 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "13" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 121 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 620000 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: - index_per_ii: 12 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 256 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 510002 +// YAML-NEXT: time_step: 12 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: - index_per_ii: 13 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2200001 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 44 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$24" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2830001 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: id: 800000 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 104 -// YAML-NEXT: time_step: 14 +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 201 +// YAML-NEXT: time_step: 13 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 14 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI" // ASM: # Compiled II: 15 // ASM: PE(0,0): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [EAST, RED] (t=15, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [EAST, RED] (t=15, inv_iters=1) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { @@ -3287,13 +640,13 @@ // ASM-NEXT: DATA_MOV, [EAST, RED] -> [EAST, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$1], [$0] (t=3, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$8], [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: ICMP_ULT, [$0], [#4] -> [EAST, RED], [$3], [NORTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: ICMP_ULT, [$0], [#4] -> [EAST, RED], [$24], [NORTH, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: ZEXT, [$1] -> [$1], [$0] (t=5, inv_iters=0) +// ASM-NEXT: ZEXT, [$8] -> [$8], [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$0] (t=6, inv_iters=0) @@ -3302,26 +655,28 @@ // ASM-NEXT: AND, [$0], [#2147483644] -> [$0] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$2] -> [EAST, RED], [$0] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$2] (t=8, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$16] -> [EAST, RED], [$0] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: AND, [$1], [#3] -> [$0], [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: AND, [$8], [#3] -> [$0], [$8] (t=9, inv_iters=0) // ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#0] -> [EAST, RED], [$1], [$0] (t=10, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#0] -> [NORTH, RED], [$8], [$0] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$8] -> [EAST, RED] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [NORTH, RED], [$1], [$0] (t=11, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$1] -> [EAST, RED] (t=11, inv_iters=0) +// ASM-NEXT: NOT, [$0] -> [NORTH, RED], [$8], [$0] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$8] -> [EAST, RED] (t=11, inv_iters=0) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [$0] (t=13, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$2] (t=13, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$16], [$24] -> [$0] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) // ASM-NEXT: { // ASM-NEXT: PHI, [$0], [NORTH, RED] -> [$0] (t=14, inv_iters=0) @@ -3335,7 +690,7 @@ // ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [WEST, RED], [NORTH, RED], [$3] (t=2, inv_iters=0) +// ASM-NEXT: GRANT_ONCE, [$0] -> [WEST, RED], [NORTH, RED], [$24] (t=2, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { @@ -3346,40 +701,39 @@ // ASM-NEXT: GEP, [$0] -> [$0] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=5, inv_iters=0) -// ASM-NEXT: NOT, [$3] -> [NORTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=5, inv_iters=0) +// ASM-NEXT: NOT, [$24] -> [NORTH, RED] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=21, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [$16] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$4], [$5] -> [EAST, RED] (t=22, inv_iters=1) +// ASM-NEXT: MUL, [$16], [EAST, RED] -> [EAST, RED] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$2] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=9, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [EAST, RED] (t=24, inv_iters=1) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED] (t=10, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$4] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=11, inv_iters=0) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [WEST, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$5] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=12, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [NORTH, RED] (t=27, inv_iters=1) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: OR, [$2], [#3] -> [NORTH, RED], [$0], [EAST, RED] (t=13, inv_iters=0) +// ASM-NEXT: OR, [$16], [#3] -> [NORTH, RED], [$0], [EAST, RED] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) // ASM-NEXT: { // ASM-NEXT: GEP, [$0] -> [WEST, RED] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=14, inv_iters=0) // ASM-NEXT: } (idx_per_ii=14) // ASM: PE(2,0): // ASM-NEXT: { @@ -3396,38 +750,31 @@ // ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [$1] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: GEP, [$0] -> [EAST, RED] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [WEST, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$4] (t=20, inv_iters=1) +// ASM-NEXT: LOAD, [NORTH, RED] -> [$8] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=21, inv_iters=1) +// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$1] -> [WEST, RED] (t=22, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=22, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$3] (t=22, inv_iters=1) +// ASM-NEXT: MUL, [$0], [$8] -> [$0] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [$2] -> [$2] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=23, inv_iters=1) +// ASM-NEXT: ADD, [EAST, RED], [WEST, RED] -> [EAST, RED] (t=23, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [WEST, RED] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: PHI, [$0], [$1], [$3] -> [NORTH, RED] (t=24, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=24, inv_iters=1) +// ASM-NEXT: ADD, [EAST, RED], [$0] -> [EAST, RED] (t=24, inv_iters=1) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [$2] -> [$0] (t=25, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [WEST, RED] (t=25, inv_iters=1) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$4] (t=26, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=14, inv_iters=0) // ASM-NEXT: } (idx_per_ii=14) @@ -3440,100 +787,97 @@ // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [$2], [WEST, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: GEP, [$0] -> [$16], [$24] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$1] -> [WEST, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=20, inv_iters=1) +// ASM-NEXT: LOAD, [$8] -> [WEST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$0] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$4] (t=21, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [NORTH, RED] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: MUL, [WEST, RED], [$0] -> [$3] (t=22, inv_iters=1) +// ASM-NEXT: LOAD, [$16] -> [WEST, RED] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$2] -> [WEST, RED] (t=23, inv_iters=1) +// ASM-NEXT: LOAD, [$8] -> [WEST, RED] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$1] -> [$0] (t=24, inv_iters=1) +// ASM-NEXT: STORE, [WEST, RED], [$24] (t=24, inv_iters=1) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [$3] -> [$0] (t=25, inv_iters=1) +// ASM-NEXT: STORE, [WEST, RED], [$0] (t=25, inv_iters=1) // ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$4] (t=26, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=11) // ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: GEP, [$3] -> [NORTH, RED] (t=15, inv_iters=1) +// ASM-NEXT: GEP, [$24] -> [NORTH, RED] (t=15, inv_iters=1) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: LOAD, [$0] -> [$0] (t=16, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$4], [$1] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [EAST, RED] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: SEXT, [$0] -> [NORTH, RED] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [NORTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { // ASM-NEXT: NOT, [SOUTH, RED] -> [SOUTH, RED], [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$1], [EAST, RED], [$0] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$8], [EAST, RED], [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=7, inv_iters=0) // ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$5], [$6] -> [$0] (t=23, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$0] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$24] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$4] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=11, inv_iters=0) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$0] -> [$5], [$1] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$6] (t=12, inv_iters=0) +// ASM-NEXT: PHI_START, [$8], [$0] -> [EAST, RED], [$8] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=12, inv_iters=0) // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$2] -> [SOUTH, RED] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=13, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [SOUTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [EAST, RED] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$16] (t=14, inv_iters=0) // ASM-NEXT: } (idx_per_ii=14) // ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$6] -> [$1], [EAST, RED], [NORTH, RED], [$0] (t=15, inv_iters=1) +// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [$8], [EAST, RED], [NORTH, RED], [$0] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$1] -> [NORTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$8] -> [NORTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$0] (t=31, inv_iters=2) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$5] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [EAST, RED] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=3, inv_iters=0) -// ASM-NEXT: PHI_START, [WEST, RED], [$4] -> [EAST, RED], [$0] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=3, inv_iters=0) +// ASM-NEXT: PHI_START, [WEST, RED], [$24] -> [EAST, RED], [$0] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=4, inv_iters=0) @@ -3541,292 +885,40 @@ // ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [SOUTH, RED], [$0], [WEST, RED] (t=5, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED], [$0], [WEST, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=6, inv_iters=0) // ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [SOUTH, RED] -> [EAST, RED] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$2] -> [EAST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=22, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$0] (t=22, inv_iters=1) +// ASM-NEXT: PHI_START, [WEST, RED], [$16] -> [EAST, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [$1], [$3], [WEST, RED], [NORTH, RED], [EAST, RED], [SOUTH, RED], [$0] (t=8, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$5] (t=23, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$4] (t=23, inv_iters=1) +// ASM-NEXT: PHI_START, [WEST, RED], [NORTH, RED] -> [$8], [$24], [WEST, RED], [NORTH, RED], [EAST, RED], [SOUTH, RED], [$0] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#4] -> [$2], [$1] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$1] -> [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#4] -> [NORTH, RED], [$8] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$8] -> [EAST, RED] (t=9, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=24, inv_iters=1) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [SOUTH, RED] -> [$0], [$2], [WEST, RED] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$2] -> [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$6] (t=25, inv_iters=1) +// ASM-NEXT: ICMP_EQ, [$0], [SOUTH, RED] -> [$0], [$16], [WEST, RED] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { // ASM-NEXT: NOT, [$0] -> [NORTH, RED], [EAST, RED], [SOUTH, RED], [WEST, RED] (t=11, inv_iters=0) // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=11, inv_iters=0) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$2] -> [$1] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: PHI, [$0], [$1] -> [WEST, RED] (t=13, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$2] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$3] -> [WEST, RED] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(2,1): -// ASM-NEXT: { -// ASM-NEXT: GEP, [$1] -> [EAST, RED] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GEP, [WEST, RED] -> [SOUTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [SOUTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$4] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: ADD, [WEST, RED], [#1] -> [$0], [NORTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [WEST, RED] -> [$0], [$1], [$2] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$5], [NORTH, RED], [$3] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$2] -> [SOUTH, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$3] -> [WEST, RED] (t=22, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: ADD, [WEST, RED], [#4] -> [WEST, RED], [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=9, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$4], [$5] -> [WEST, RED] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: RETURN_VOID, [SOUTH, RED] (t=25, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [WEST, RED] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: OR, [$1], [#2] -> [EAST, RED], [$0], [$1] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [SOUTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GEP, [WEST, RED] -> [SOUTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [SOUTH, RED] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [SOUTH, RED], [$0] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [SOUTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(0,2): -// ASM-NEXT: { -// ASM-NEXT: LOAD, [EAST, RED] -> [NORTH, RED] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [SOUTH, RED] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [$0] -> [$0] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [$3], [$5] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$4] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$1] -> [EAST, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$2] -> [NORTH, RED] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$3] -> [$0] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: STORE, [EAST, RED], [$4] (t=25, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [EAST, RED] -> [$0] (t=26, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$5] (t=27, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=12) -// ASM: PE(1,2): -// ASM-NEXT: { -// ASM-NEXT: GEP, [$1] -> [WEST, RED] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GEP, [SOUTH, RED] -> [WEST, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$2] -> [EAST, RED] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [WEST, RED] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [WEST, RED], [NORTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$2] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$3], [$4] -> [SOUTH, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=22, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [SOUTH, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [SOUTH, RED] -> [$1] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: ADD, [$0], [$1] -> [WEST, RED] (t=24, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: MUL, [SOUTH, RED], [$1] -> [WEST, RED] (t=25, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$3] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$4] (t=12, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$8] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: OR, [$0], [#1] -> [NORTH, RED], [$0], [$1] (t=13, inv_iters=0) +// ASM-NEXT: PHI, [$0], [$8] -> [WEST, RED] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=13, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$0] (t=28, inv_iters=1) // ASM-NEXT: } (idx_per_ii=13) // ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [WEST, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(2,2): -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [SOUTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GEP, [SOUTH, RED] -> [SOUTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [WEST, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [WEST, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM: PE(3,2): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [SOUTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(0,3): -// ASM-NEXT: { -// ASM-NEXT: SEXT, [SOUTH, RED] -> [$0] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [SOUTH, RED] -> [$1] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [$2] (t=18, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$1] -> [SOUTH, RED], [$3] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$3] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$3] -> [SOUTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$2] -> [$0] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$1] -> [EAST, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [$3] -> [$0] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: ADD, [SOUTH, RED], [$0] -> [$0] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$2] (t=25, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(1,3): -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [WEST, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GEP, [SOUTH, RED] -> [WEST, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: GEP, [$24] -> [WEST, RED] (t=14, inv_iters=0) diff --git a/test/mapping_quality/branch_for.mlir b/test/mapping_quality/branch_for.mlir index f78a1be1..2ef65d4a 100644 --- a/test/mapping_quality/branch_for.mlir +++ b/test/mapping_quality/branch_for.mlir @@ -197,7 +197,7 @@ func.func @loop_test() -> f32 { // MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { -// YAML: array_config: +// YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 // YAML-NEXT: compiled_ii: 4 @@ -237,28 +237,288 @@ func.func @loop_test() -> f32 { // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 310001 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 47 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "3" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#10" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 2 +// YAML-NEXT: time_step: 0 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 400001 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 18 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 29 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "6" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 44 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 390000 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 24 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ICMP_SLT" +// YAML-NEXT: id: 35 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "7" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 43 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 16 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "9" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 40 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 46 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "10" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 42 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: -// ASM: # Compiled II: 4 -// ASM: PE(0,0): +// ASM: # Compiled II: 4 +// ASM: PE(0,0): // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) -// ASM: PE(1,0): +// ASM: PE(1,0): // ASM-NEXT: { // ASM-NEXT: PHI_START, [WEST, RED], [EAST, RED] -> [NORTH, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(2,0): +// ASM: PE(2,0): // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [NORTH, RED] -> [WEST, RED] (t=4, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) -// ASM: PE(3,0): +// ASM: PE(3,0): // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#10] -> [NORTH, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) -// ASM: PE(1,1): +// ASM: PE(1,1): // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#1] -> [$0] (t=0, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=4, inv_iters=1) @@ -269,6 +529,66 @@ func.func @loop_test() -> f32 { // ASM-NEXT: { // ASM-NEXT: ADD, [SOUTH, RED], [$0] -> [EAST, RED], [SOUTH, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(2,1): +// ASM: PE(2,1): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=4, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$16] -> [NORTH, RED] (t=4, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: ICMP_SLT, [WEST, RED], [EAST, RED] -> [SOUTH, RED], [WEST, RED], [$16], [$8], [EAST, RED], [NORTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(3,1): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [$0] (t=4, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [WEST, RED], [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM: PE(1,2): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=4, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [NORTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM: PE(2,2): +// ASM-NEXT: { +// ASM-NEXT: NOT, [SOUTH, RED] -> [NORTH, RED] (t=4, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=4, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM: PE(1,3): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0.000000] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [SOUTH, RED] -> [EAST, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(2,3): +// ASM-NEXT: { +// ASM-NEXT: FADD, [WEST, RED], [$0] -> [WEST, RED], [$0] (t=4, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [EAST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#3.000000] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [SOUTH, RED] -> [$0], [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(3,3): +// ASM-NEXT: { +// ASM-NEXT: RETURN_VALUE, [WEST, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) diff --git a/test/multi-cgra/kernel_mapping/fir/fir.mlir b/test/multi-cgra/kernel_mapping/fir/fir.mlir index 69d228c7..2a84cd51 100644 --- a/test/multi-cgra/kernel_mapping/fir/fir.mlir +++ b/test/multi-cgra/kernel_mapping/fir/fir.mlir @@ -89,7 +89,7 @@ module attributes {} { } } -// TASKFLOW: module { +// TASKFLOW: module { // TASKFLOW-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // TASKFLOW-NEXT: %c0_i32 = arith.constant 0 : i32 // TASKFLOW-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -107,7 +107,7 @@ module attributes {} { // TASKFLOW-NEXT: } // TASKFLOW-NEXT: } -// HYPERBLOCK: module { +// HYPERBLOCK: module { // HYPERBLOCK-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // HYPERBLOCK-NEXT: %c0_i32 = arith.constant 0 : i32 // HYPERBLOCK-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -127,7 +127,7 @@ module attributes {} { // HYPERBLOCK-NEXT: } // HYPERBLOCK-NEXT: } -// KERNEL: module { +// KERNEL: module { // KERNEL-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // KERNEL-NEXT: %c0_i32 = arith.constant 0 : i32 // KERNEL-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -148,7 +148,7 @@ module attributes {} { // KERNEL-NEXT: } // KERNEL-NEXT: } -// NEURA: module { +// NEURA: module { // NEURA-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // NEURA-NEXT: %c0_i32 = arith.constant 0 : i32 // NEURA-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -169,7 +169,7 @@ module attributes {} { // NEURA-NEXT: } // NEURA-NEXT: } -// DATAFLOW: module { +// DATAFLOW: module { // DATAFLOW-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // DATAFLOW-NEXT: %c0_i32 = arith.constant 0 : i32 // DATAFLOW-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -198,7 +198,7 @@ module attributes {} { // DATAFLOW-NEXT: } // DATAFLOW-NEXT: } -// MAPPED: module { +// MAPPED: module { // MAPPED-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // MAPPED-NEXT: %c0_i32 = arith.constant 0 : i32 // MAPPED-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -211,7 +211,7 @@ module attributes {} { // MAPPED-NEXT: %4 = "neura.data_mov"(%2) {dfg_id = 4 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %5 = neura.phi_start %4, %3 {dfg_id = 8 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %6 = neura.counter {counter_id = 0 : i32, counter_type = "leaf", dfg_id = 2 : i32, lower_bound = 0 : index, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}], step = 1 : index, upper_bound = 32 : index} : !neura.data -// MAPPED-NEXT: %7 = "neura.data_mov"(%6) {dfg_id = 5 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 0 : i32}, {id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %7 = "neura.data_mov"(%6) {dfg_id = 5 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 0 : i32}, {id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %8 = neura.load_indexed [%7 : !neura.data] {dfg_id = 9 : i32, lhs_value = "%input0", mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data // MAPPED-NEXT: %9 = "neura.data_mov"(%6) {dfg_id = 6 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %10 = neura.load_indexed [%9 : !neura.data] {dfg_id = 10 : i32, lhs_value = "%input1", mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data @@ -237,4 +237,4 @@ module attributes {} { // MAPPED-NEXT: } // MAPPED-NEXT: return %value_outputs : i32 // MAPPED-NEXT: } -// MAPPED-NEXT: } \ No newline at end of file +// MAPPED-NEXT: } diff --git a/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir b/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir index 0e9c0b38..1974708d 100644 --- a/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir +++ b/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir @@ -168,7 +168,7 @@ module { // MAPPED-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 16 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 19 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %14 = "neura.data_mov"(%5) {dfg_id = 10 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 15 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 15 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 18 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %17 = "neura.data_mov"(%10) {dfg_id = 14 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %18 = "neura.not"(%17) {dfg_id = 17 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data @@ -190,7 +190,7 @@ module { // MAPPED-NEXT: %33 = "neura.data_mov"(%13) {dfg_id = 22 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %34 = "neura.add"(%33) {dfg_id = 26 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : index} : (!neura.data) -> !neura.data // MAPPED-NEXT: neura.ctrl_mov %34 -> %6 {dfg_id = 30 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : !neura.data !neura.data -// MAPPED-NEXT: neura.ctrl_mov %32 -> %3 {dfg_id = 37 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 194 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 194 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}]} : !neura.data !neura.data +// MAPPED-NEXT: neura.ctrl_mov %32 -> %3 {dfg_id = 37 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 208 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 208 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : !neura.data !neura.data // MAPPED-NEXT: neura.yield {dfg_id = 4 : i32} // MAPPED-NEXT: } : i32 // MAPPED-NEXT: taskflow.yield reads(%arg3, %arg4 : memref, memref) values(%0 : i32) diff --git a/test/multi-cgra/kernel_mapping/relu/relu.mlir b/test/multi-cgra/kernel_mapping/relu/relu.mlir index 3fcc12be..26eaa24e 100644 --- a/test/multi-cgra/kernel_mapping/relu/relu.mlir +++ b/test/multi-cgra/kernel_mapping/relu/relu.mlir @@ -93,31 +93,31 @@ module attributes {} { } } -// TASKFLOW: module { -// TASKFLOW-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { -// TASKFLOW-NEXT: %c0_i32 = arith.constant 0 : i32 -// TASKFLOW-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { -// TASKFLOW-NEXT: ^bb0(%arg2: memref, %arg3: memref, %arg4: memref, %arg5: i32): -// TASKFLOW-NEXT: affine.for %arg6 = 0 to 32 { -// TASKFLOW-NEXT: %0 = affine.load %arg2[%arg6] : memref -// TASKFLOW-NEXT: %1 = arith.cmpi sgt, %0, %arg5 : i32 -// TASKFLOW-NEXT: scf.if %1 { -// TASKFLOW-NEXT: %2 = affine.load %arg2[%arg6] : memref -// TASKFLOW-NEXT: %3 = affine.load %arg4[%arg6] : memref -// TASKFLOW-NEXT: %4 = arith.addi %3, %2 : i32 -// TASKFLOW-NEXT: affine.store %4, %arg4[%arg6] : memref -// TASKFLOW-NEXT: } else { -// TASKFLOW-NEXT: %2 = affine.load %arg4[%arg6] : memref -// TASKFLOW-NEXT: affine.store %2, %arg4[%arg6] : memref -// TASKFLOW-NEXT: } -// TASKFLOW-NEXT: } -// TASKFLOW-NEXT: taskflow.yield reads(%arg2, %arg4 : memref, memref) writes(%arg4 : memref) -// TASKFLOW-NEXT: } -// TASKFLOW-NEXT: return -// TASKFLOW-NEXT: } -// TASKFLOW-NEXT:} +// TASKFLOW: module { +// TASKFLOW-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { +// TASKFLOW-NEXT: %c0_i32 = arith.constant 0 : i32 +// TASKFLOW-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { +// TASKFLOW-NEXT: ^bb0(%arg2: memref, %arg3: memref, %arg4: memref, %arg5: i32): +// TASKFLOW-NEXT: affine.for %arg6 = 0 to 32 { +// TASKFLOW-NEXT: %0 = affine.load %arg2[%arg6] : memref +// TASKFLOW-NEXT: %1 = arith.cmpi sgt, %0, %arg5 : i32 +// TASKFLOW-NEXT: scf.if %1 { +// TASKFLOW-NEXT: %2 = affine.load %arg2[%arg6] : memref +// TASKFLOW-NEXT: %3 = affine.load %arg4[%arg6] : memref +// TASKFLOW-NEXT: %4 = arith.addi %3, %2 : i32 +// TASKFLOW-NEXT: affine.store %4, %arg4[%arg6] : memref +// TASKFLOW-NEXT: } else { +// TASKFLOW-NEXT: %2 = affine.load %arg4[%arg6] : memref +// TASKFLOW-NEXT: affine.store %2, %arg4[%arg6] : memref +// TASKFLOW-NEXT: } +// TASKFLOW-NEXT: } +// TASKFLOW-NEXT: taskflow.yield reads(%arg2, %arg4 : memref, memref) writes(%arg4 : memref) +// TASKFLOW-NEXT: } +// TASKFLOW-NEXT: return +// TASKFLOW-NEXT: } +// TASKFLOW-NEXT: } -// HYPERBLOCK: module { +// HYPERBLOCK: module { // HYPERBLOCK-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { // HYPERBLOCK-NEXT: %c0_i32 = arith.constant 0 : i32 // HYPERBLOCK-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { @@ -144,7 +144,7 @@ module attributes {} { // HYPERBLOCK-NEXT: } // HYPERBLOCK-NEXT: } -// KERNEL: module { +// KERNEL: module { // KERNEL-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { // KERNEL-NEXT: %c0_i32 = arith.constant 0 : i32 // KERNEL-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { @@ -172,7 +172,7 @@ module attributes {} { // KERNEL-NEXT: } // KERNEL-NEXT: } -// NEURA: module { +// NEURA: module { // NEURA-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { // NEURA-NEXT: %c0_i32 = arith.constant 0 : i32 // NEURA-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { @@ -203,7 +203,7 @@ module attributes {} { // NEURA-NEXT: } // NEURA-NEXT: } -// DATAFLOW: module { +// DATAFLOW: module { // DATAFLOW-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { // DATAFLOW-NEXT: %c0_i32 = arith.constant 0 : i32 // DATAFLOW-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { @@ -231,7 +231,7 @@ module attributes {} { // DATAFLOW-NEXT: } // DATAFLOW-NEXT: } -// MAPPED: module { +// MAPPED: module { // MAPPED-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { // MAPPED-NEXT: %c0_i32 = arith.constant 0 : i32 // MAPPED-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { @@ -245,19 +245,19 @@ module attributes {} { // MAPPED-NEXT: %4 = "neura.data_mov"(%3) {dfg_id = 6 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %5 = "neura.icmp"(%4) <{cmpType = "sgt"}> {dfg_id = 7 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = "%input1"} : (!neura.data) -> !neura.data // MAPPED-NEXT: %6 = "neura.data_mov"(%1) {dfg_id = 3 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 32 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %7 = "neura.data_mov"(%5) {dfg_id = 9 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %7 = "neura.data_mov"(%5) {dfg_id = 9 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %8 = neura.grant_predicate %6, %7 {dfg_id = 11 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %9 = "neura.data_mov"(%5) {dfg_id = 8 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %10 = "neura.not"(%9) {dfg_id = 10 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %11 = "neura.data_mov"(%1) {dfg_id = 4 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 128 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 128 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 128 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 12 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 16 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPED-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 20 : i32, mapping_locs = [{id = 129 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 20 : i32, mapping_locs = [{id = 136 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %15 = neura.load_indexed [%14 : !neura.data] {dfg_id = 23 : i32, lhs_value = "%input2", mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data // MAPPED-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 25 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %17 = "neura.data_mov"(%13) {dfg_id = 19 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}, {id = 256 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: neura.store_indexed %16 to [%17 : !neura.data] {dfg_id = 27 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 2 : i32}], rhs_value = "%input2"} : !neura.data -// MAPPED-NEXT: %18 = "neura.data_mov"(%8) {dfg_id = 15 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %18 = "neura.data_mov"(%8) {dfg_id = 15 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %19 = neura.load_indexed [%18 : !neura.data] {dfg_id = 18 : i32, lhs_value = "%input0", mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data // MAPPED-NEXT: %20 = "neura.data_mov"(%8) {dfg_id = 14 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %21 = neura.load_indexed [%20 : !neura.data] {dfg_id = 17 : i32, lhs_value = "%input2", mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data @@ -273,4 +273,4 @@ module attributes {} { // MAPPED-NEXT: } // MAPPED-NEXT: return // MAPPED-NEXT: } -// MAPPED-NEXT: } \ No newline at end of file +// MAPPED-NEXT: } diff --git a/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir b/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir index 38211fef..91f0f58b 100644 --- a/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir +++ b/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir @@ -64,7 +64,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { } } -// AFFINE: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { +// AFFINE: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // AFFINE-NEXT: memref.global "private" constant @__constant_64xf32 : memref<64xf32> = dense<0.000000e+00> {alignment = 64 : i64} // AFFINE-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32_0 : memref<64x3x3x64xf32> = dense<-0.0151730878> {alignment = 64 : i64} // AFFINE-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32 : memref<64x3x3x64xf32> = dense<0.0197670367> {alignment = 64 : i64} @@ -239,7 +239,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // AFFINE-NEXT: } -// KERNEL: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { +// KERNEL: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // KERNEL-NEXT: memref.global "private" constant @__constant_64xf32 : memref<64xf32> = dense<0.000000e+00> {alignment = 64 : i64} // KERNEL-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32_0 : memref<64x3x3x64xf32> = dense<-0.0151730878> {alignment = 64 : i64} // KERNEL-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32 : memref<64x3x3x64xf32> = dense<0.0197670367> {alignment = 64 : i64} @@ -523,7 +523,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { -// STREAM: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { +// STREAM: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // STREAM-NEXT: memref.global "private" constant @__constant_64xf32 : memref<64xf32> = dense<0.000000e+00> {alignment = 64 : i64} // STREAM-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32_0 : memref<64x3x3x64xf32> = dense<-0.0151730878> {alignment = 64 : i64} // STREAM-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32 : memref<64x3x3x64xf32> = dense<0.0197670367> {alignment = 64 : i64} @@ -705,19 +705,210 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // STREAM-NEXT: } -// RESOPT: taskflow.task @Task_1_Task_0_Task_2_utilfused_utilfused -// RESOPT-SAME: {cgra_count = 1 : i32, compiled_ii = 4 : i32, steps = 3 : i32, tile_shape = "1x1", trip_count = 6400 : i32} -// RESOPT: taskflow.task @Task_3 -// RESOPT-SAME: {cgra_count = 1 : i32, compiled_ii = 2 : i32, steps = 6 : i32, tile_shape = "1x1", trip_count = 2359296 : i32} -// RESOPT: taskflow.task @Task_4_Task_5_fused_Task_7_utilfused -// RESOPT-SAME: {cgra_count = 1 : i32, compiled_ii = 2 : i32, steps = 7 : i32, tile_shape = "1x1", trip_count = 6400 : i32} -// RESOPT: taskflow.task @Task_6_Task_8_utilfused -// RESOPT-SAME: {cgra_count = 1 : i32, compiled_ii = 2 : i32, steps = 3 : i32, tile_shape = "1x1", trip_count = 4096 : i32} -// RESOPT: taskflow.task @Task_9 -// RESOPT-SAME: {cgra_count = 1 : i32, compiled_ii = 2 : i32, steps = 6 : i32, tile_shape = "1x1", trip_count = 2359296 : i32} -// RESOPT: taskflow.task @Task_10_Task_11_Task_12_fused_fused -// RESOPT-SAME: {cgra_count = 1 : i32, compiled_ii = 2 : i32, steps = 8 : i32, tile_shape = "1x1", trip_count = 4096 : i32} -// RESOPT: return +// RESOPT: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { +// RESOPT-NEXT: memref.global "private" constant @__constant_64xf32 : memref<64xf32> = dense<0.000000e+00> {alignment = 64 : i64} +// RESOPT-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32_0 : memref<64x3x3x64xf32> = dense<-0.0151730878> {alignment = 64 : i64} +// RESOPT-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32 : memref<64x3x3x64xf32> = dense<0.0197670367> {alignment = 64 : i64} +// RESOPT-NEXT: func.func @forward(%arg0: memref<1x64x8x8xf32>) -> memref<1x64x8x8xf32> { +// RESOPT-NEXT: %cst = arith.constant 0.0197670367 : f32 +// RESOPT-NEXT: %cst_0 = arith.constant -0.0151730878 : f32 +// RESOPT-NEXT: %cst_1 = arith.constant 3.40282347E+38 : f32 +// RESOPT-NEXT: %cst_2 = arith.constant 0.000000e+00 : f32 +// RESOPT-NEXT: %alloc = memref.alloc() {alignment = 64 : i64} : memref<1x8x8x64xf32> +// RESOPT-NEXT: %alloc_3 = memref.alloc() {alignment = 64 : i64} : memref<1x10x10x64xf32> +// RESOPT-NEXT: %alloc_4 = memref.alloc() {alignment = 64 : i64} : memref<1x8x8x64xf32> +// RESOPT-NEXT: %dependency_read_out, %dependency_write_out:3 = taskflow.task @Task_1_Task_0_Task_2_utilfused_utilfused dependency_read_in(%arg0 : memref<1x64x8x8xf32>) dependency_write_in(%alloc_3, %alloc, %alloc_4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) value_inputs(%cst_2 : f32) [original_read_memrefs(%arg0 : memref<1x64x8x8xf32>), original_write_memrefs(%alloc_3, %alloc, %alloc_4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>)] {cgra_count = 1 : i32, compiled_ii = 4 : i32, steps = 3 : i32, tile_shape = "1x1", trip_count = 6400 : i32} : (memref<1x64x8x8xf32>, memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x64x8x8xf32>, memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { +// RESOPT-NEXT: ^bb0(%arg1: memref<1x64x8x8xf32>, %arg2: memref<1x10x10x64xf32>, %arg3: memref<1x8x8x64xf32>, %arg4: memref<1x8x8x64xf32>, %arg5: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg5, %arg2, %arg1, %arg3, %arg4 : f32, memref<1x10x10x64xf32>, memref<1x64x8x8xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg6: f32, %arg7: memref<1x10x10x64xf32>, %arg8: memref<1x64x8x8xf32>, %arg9: memref<1x8x8x64xf32>, %arg10: memref<1x8x8x64xf32>): +// RESOPT-NEXT: %12 = "neura.constant"() <{value = "%input1"}> : () -> !neura.data, i1> +// RESOPT-NEXT: %13 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %14 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : !neura.data +// RESOPT-NEXT: %15 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : !neura.data +// RESOPT-NEXT: %16 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: neura.store_indexed %12 to %12[%13, %14, %15, %16 : !neura.data, !neura.data, !neura.data, !neura.data] !neura.data, i1> {lhs_value = "%input0"} : !neura.data, i1> +// RESOPT-NEXT: %17 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %18 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %19 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %20 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %21 = neura.load_indexed [%17, %20, %18, %19 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: neura.store_indexed %21 to [%17, %18, %19, %20 : !neura.data, !neura.data, !neura.data, !neura.data] {rhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %22 = "neura.constant"() <{value = "%input1"}> : () -> !neura.data, i1> +// RESOPT-NEXT: %23 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %24 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %25 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %26 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: neura.store_indexed %22 to %22[%23, %24, %25, %26 : !neura.data, !neura.data, !neura.data, !neura.data] !neura.data, i1> {lhs_value = "%input0"} : !neura.data, i1> +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: %4 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %5 = taskflow.counter parent(%4 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %6 = taskflow.counter parent(%5 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %7 = taskflow.counter parent(%6 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: %8 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %9 = taskflow.counter parent(%8 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %10 = taskflow.counter parent(%9 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %11 = taskflow.counter parent(%10 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: taskflow.yield reads(%arg1 : memref<1x64x8x8xf32>) writes(%arg2, %arg3, %arg4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: %dependency_read_out_5:2, %dependency_write_out_6 = taskflow.task @Task_3 dependency_read_in(%dependency_write_out#0, %dependency_write_out#2 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) dependency_write_in(%dependency_write_out#2 : memref<1x8x8x64xf32>) value_inputs(%cst_0 : f32) [original_read_memrefs(%alloc_3, %alloc_4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>), original_write_memrefs(%alloc_4 : memref<1x8x8x64xf32>)] {cgra_count = 1 : i32, compiled_ii = 2 : i32, steps = 6 : i32, tile_shape = "1x1", trip_count = 2359296 : i32} : (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { +// RESOPT-NEXT: ^bb0(%arg1: memref<1x10x10x64xf32>, %arg2: memref<1x8x8x64xf32>, %arg3: memref<1x8x8x64xf32>, %arg4: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 3 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: %4 = taskflow.counter parent(%3 : index) attributes {counter_id = 4 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : index +// RESOPT-NEXT: %5 = taskflow.counter parent(%4 : index) attributes {counter_id = 5 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : index +// RESOPT-NEXT: %6 = taskflow.counter parent(%5 : index) attributes {counter_id = 6 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg1, %arg3, %arg4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, f32) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg5: memref<1x10x10x64xf32>, %arg6: memref<1x8x8x64xf32>, %arg7: f32): +// RESOPT-NEXT: %7 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %8 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %9 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %10 = neura.counter {counter_id = 3 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %11 = neura.counter {counter_id = 4 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : !neura.data +// RESOPT-NEXT: %12 = neura.counter {counter_id = 5 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : !neura.data +// RESOPT-NEXT: %13 = neura.counter {counter_id = 6 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %14 = "neura.add"(%8, %11) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %15 = "neura.add"(%9, %12) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %16 = neura.load_indexed [%7, %14, %15, %13 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %17 = neura.load_indexed [%7, %8, %9, %10 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %18 = "neura.fmul"(%16) {rhs_value = "%input2"} : (!neura.data) -> !neura.data +// RESOPT-NEXT: %19 = "neura.fadd"(%17, %18) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %19 to [%7, %8, %9, %10 : !neura.data, !neura.data, !neura.data, !neura.data] {rhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: taskflow.yield reads(%arg1, %arg3 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) writes(%arg3 : memref<1x8x8x64xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: %alloc_7 = memref.alloc() {alignment = 64 : i64} : memref<1x64x8x8xf32> +// RESOPT-NEXT: %alloc_8 = memref.alloc() {alignment = 64 : i64} : memref<1x8x8x64xf32> +// RESOPT-NEXT: %alloc_9 = memref.alloc() {alignment = 64 : i64} : memref<1x10x10x64xf32> +// RESOPT-NEXT: %dependency_read_out_10, %dependency_write_out_11:2 = taskflow.task @Task_4_Task_5_fused_Task_7_utilfused dependency_read_in(%dependency_write_out_6 : memref<1x8x8x64xf32>) dependency_write_in(%alloc_7, %alloc_9 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) value_inputs(%cst_1, %cst_2 : f32, f32) [original_read_memrefs(%alloc_4 : memref<1x8x8x64xf32>), original_write_memrefs(%alloc_7, %alloc_9 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>)] {cgra_count = 1 : i32, compiled_ii = 2 : i32, steps = 7 : i32, tile_shape = "1x1", trip_count = 6400 : i32} : (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>, f32, f32) -> (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) { +// RESOPT-NEXT: ^bb0(%arg1: memref<1x8x8x64xf32>, %arg2: memref<1x64x8x8xf32>, %arg3: memref<1x10x10x64xf32>, %arg4: f32, %arg5: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg1, %arg4, %arg5, %arg2, %arg3 : memref<1x8x8x64xf32>, f32, f32, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg6: memref<1x8x8x64xf32>, %arg7: f32, %arg8: f32, %arg9: memref<1x64x8x8xf32>, %arg10: memref<1x10x10x64xf32>): +// RESOPT-NEXT: %8 = "neura.constant"() <{value = "%input1"}> : () -> !neura.data +// RESOPT-NEXT: %9 = "neura.constant"() <{value = "%input2"}> : () -> !neura.data +// RESOPT-NEXT: %10 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %11 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %12 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %13 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %14 = neura.load_indexed [%10, %12, %13, %11 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %15 = "neura.fcmp"(%14, %8) <{cmpType = "olt"}> : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %16 = "neura.sel"(%15, %14, %8) : (!neura.data, !neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %17 = "neura.fcmp"(%16, %9) <{cmpType = "ogt"}> : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %18 = "neura.sel"(%17, %16, %9) : (!neura.data, !neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %18 to [%10, %11, %12, %13 : !neura.data, !neura.data, !neura.data, !neura.data] {rhs_value = "%input3"} : !neura.data +// RESOPT-NEXT: %19 = "neura.constant"() <{value = "%input1"}> : () -> !neura.data, i1> +// RESOPT-NEXT: %20 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %21 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : !neura.data +// RESOPT-NEXT: %22 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : !neura.data +// RESOPT-NEXT: %23 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: neura.store_indexed %19 to %19[%20, %21, %22, %23 : !neura.data, !neura.data, !neura.data, !neura.data] !neura.data, i1> {lhs_value = "%input0"} : !neura.data, i1> +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: %4 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %5 = taskflow.counter parent(%4 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : index +// RESOPT-NEXT: %6 = taskflow.counter parent(%5 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : index +// RESOPT-NEXT: %7 = taskflow.counter parent(%6 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: taskflow.yield reads(%arg1 : memref<1x8x8x64xf32>) writes(%arg2, %arg3 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: %alloc_12 = memref.alloc() {alignment = 64 : i64} : memref<1x8x8x64xf32> +// RESOPT-NEXT: %dependency_read_out_13, %dependency_write_out_14:2 = taskflow.task @Task_6_Task_8_utilfused dependency_read_in(%dependency_write_out_11#0 : memref<1x64x8x8xf32>) dependency_write_in(%alloc_8, %alloc_12 : memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) value_inputs(%cst_2 : f32) [original_read_memrefs(%alloc_7 : memref<1x64x8x8xf32>), original_write_memrefs(%alloc_8, %alloc_12 : memref<1x8x8x64xf32>, memref<1x8x8x64xf32>)] {cgra_count = 1 : i32, compiled_ii = 2 : i32, steps = 3 : i32, tile_shape = "1x1", trip_count = 4096 : i32} : (memref<1x64x8x8xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x64x8x8xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { +// RESOPT-NEXT: ^bb0(%arg1: memref<1x64x8x8xf32>, %arg2: memref<1x8x8x64xf32>, %arg3: memref<1x8x8x64xf32>, %arg4: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg1, %arg2, %arg4, %arg3 : memref<1x64x8x8xf32>, memref<1x8x8x64xf32>, f32, memref<1x8x8x64xf32>) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg5: memref<1x64x8x8xf32>, %arg6: memref<1x8x8x64xf32>, %arg7: f32, %arg8: memref<1x8x8x64xf32>): +// RESOPT-NEXT: %8 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %9 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %10 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %11 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %12 = neura.load_indexed [%8, %11, %9, %10 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: neura.store_indexed %12 to [%8, %9, %10, %11 : !neura.data, !neura.data, !neura.data, !neura.data] {rhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %13 = "neura.constant"() <{value = "%input1"}> : () -> !neura.data, i1> +// RESOPT-NEXT: %14 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %15 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %16 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %17 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: neura.store_indexed %13 to %13[%14, %15, %16, %17 : !neura.data, !neura.data, !neura.data, !neura.data] !neura.data, i1> {lhs_value = "%input0"} : !neura.data, i1> +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: %4 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %5 = taskflow.counter parent(%4 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %6 = taskflow.counter parent(%5 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %7 = taskflow.counter parent(%6 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: taskflow.yield reads(%arg1 : memref<1x64x8x8xf32>) writes(%arg2, %arg3 : memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: %dependency_read_out_15:2, %dependency_write_out_16 = taskflow.task @Task_9 dependency_read_in(%dependency_write_out_11#1, %dependency_write_out_14#1 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) dependency_write_in(%dependency_write_out_14#1 : memref<1x8x8x64xf32>) value_inputs(%cst : f32) [original_read_memrefs(%alloc_9, %alloc_12 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>), original_write_memrefs(%alloc_12 : memref<1x8x8x64xf32>)] {cgra_count = 1 : i32, compiled_ii = 2 : i32, steps = 6 : i32, tile_shape = "1x1", trip_count = 2359296 : i32} : (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { +// RESOPT-NEXT: ^bb0(%arg1: memref<1x10x10x64xf32>, %arg2: memref<1x8x8x64xf32>, %arg3: memref<1x8x8x64xf32>, %arg4: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 3 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: %4 = taskflow.counter parent(%3 : index) attributes {counter_id = 4 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : index +// RESOPT-NEXT: %5 = taskflow.counter parent(%4 : index) attributes {counter_id = 5 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : index +// RESOPT-NEXT: %6 = taskflow.counter parent(%5 : index) attributes {counter_id = 6 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg1, %arg3, %arg4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, f32) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg5: memref<1x10x10x64xf32>, %arg6: memref<1x8x8x64xf32>, %arg7: f32): +// RESOPT-NEXT: %7 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %8 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %9 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %10 = neura.counter {counter_id = 3 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %11 = neura.counter {counter_id = 4 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : !neura.data +// RESOPT-NEXT: %12 = neura.counter {counter_id = 5 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : !neura.data +// RESOPT-NEXT: %13 = neura.counter {counter_id = 6 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %14 = "neura.add"(%8, %11) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %15 = "neura.add"(%9, %12) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %16 = neura.load_indexed [%7, %14, %15, %13 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %17 = neura.load_indexed [%7, %8, %9, %10 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %18 = "neura.fmul"(%16) {rhs_value = "%input2"} : (!neura.data) -> !neura.data +// RESOPT-NEXT: %19 = "neura.fadd"(%17, %18) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %19 to [%7, %8, %9, %10 : !neura.data, !neura.data, !neura.data, !neura.data] {rhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: taskflow.yield reads(%arg1, %arg3 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) writes(%arg3 : memref<1x8x8x64xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: %alloc_17 = memref.alloc() {alignment = 64 : i64} : memref<1x64x8x8xf32> +// RESOPT-NEXT: %dependency_read_out_18:2, %dependency_write_out_19 = taskflow.task @Task_10_Task_11_Task_12_fused_fused dependency_read_in(%dependency_write_out_16, %dependency_read_out : memref<1x8x8x64xf32>, memref<1x64x8x8xf32>) dependency_write_in(%alloc_17 : memref<1x64x8x8xf32>) value_inputs(%cst_1, %cst_2 : f32, f32) [original_read_memrefs(%alloc_12, %arg0 : memref<1x8x8x64xf32>, memref<1x64x8x8xf32>), original_write_memrefs(%alloc_17 : memref<1x64x8x8xf32>)] {cgra_count = 1 : i32, compiled_ii = 2 : i32, steps = 8 : i32, tile_shape = "1x1", trip_count = 4096 : i32} : (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x64x8x8xf32>, f32, f32) -> (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x64x8x8xf32>) { +// RESOPT-NEXT: ^bb0(%arg1: memref<1x8x8x64xf32>, %arg2: memref<1x64x8x8xf32>, %arg3: memref<1x64x8x8xf32>, %arg4: f32, %arg5: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg1, %arg2, %arg4, %arg5, %arg3 : memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, f32, f32, memref<1x64x8x8xf32>) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg6: memref<1x8x8x64xf32>, %arg7: memref<1x64x8x8xf32>, %arg8: f32, %arg9: f32, %arg10: memref<1x64x8x8xf32>): +// RESOPT-NEXT: %4 = "neura.constant"() <{value = "%input2"}> : () -> !neura.data +// RESOPT-NEXT: %5 = "neura.constant"() <{value = "%input3"}> : () -> !neura.data +// RESOPT-NEXT: %6 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %7 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %8 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %9 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %10 = neura.load_indexed [%6, %8, %9, %7 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %11 = neura.load_indexed [%6, %7, %8, %9 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %12 = "neura.fadd"(%10, %11) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %13 = "neura.fcmp"(%12, %4) <{cmpType = "olt"}> : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %14 = "neura.sel"(%13, %12, %4) : (!neura.data, !neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %15 = "neura.fcmp"(%14, %5) <{cmpType = "ogt"}> : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %16 = "neura.sel"(%15, %14, %5) : (!neura.data, !neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %16 to [%6, %7, %8, %9 : !neura.data, !neura.data, !neura.data, !neura.data] {rhs_value = "%input4"} : !neura.data +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: taskflow.yield reads(%arg1, %arg2 : memref<1x8x8x64xf32>, memref<1x64x8x8xf32>) writes(%arg3 : memref<1x64x8x8xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: return %dependency_write_out_19 : memref<1x64x8x8xf32> +// RESOPT-NEXT: } +// RESOPT-NEXT: } // CGRA Tile Occupation after RESOPT (4x4 grid, col x row): diff --git a/test/neura/ctrl/branch_for.mlir b/test/neura/ctrl/branch_for.mlir index 0a7d6031..bec58b84 100644 --- a/test/neura/ctrl/branch_for.mlir +++ b/test/neura/ctrl/branch_for.mlir @@ -207,7 +207,7 @@ func.func @loop_test() -> f32 { // MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { -// YAML: array_config: +// YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 // YAML-NEXT: compiled_ii: 4 @@ -247,9 +247,213 @@ func.func @loop_test() -> f32 { // YAML-NEXT: time_step: 2 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#0.000000" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 8 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 23 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 7 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 240001 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 11 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ICMP_SLT" +// YAML-NEXT: id: 17 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#10" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 21 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "4" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "FADD" +// YAML-NEXT: id: 12 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#3.000000" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 19 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 22 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 15 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 27 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "RETURN_VALUE" +// YAML-NEXT: id: 29 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" -// ASM: # Compiled II: 4 -// ASM: PE(0,0): +// ASM: # Compiled II: 4 +// ASM: PE(0,0): // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED] (t=0, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=4, inv_iters=1) @@ -260,27 +464,41 @@ func.func @loop_test() -> f32 { // ASM-NEXT: { // ASM-NEXT: PHI_START, [$0], [NORTH, RED] -> [NORTH, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(1,0): +// ASM: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [$0] (t=4, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=4, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [$0] (t=1, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$1] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: ICMP_SLT, [$0], [#10] -> [$0], [WEST, RED], [EAST, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(2,0): +// ASM: PE(2,0): // ASM-NEXT: { // ASM-NEXT: NOT, [WEST, RED] -> [WEST, RED] (t=4, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) -// ASM: PE(0,1): +// ASM: PE(0,1): // ASM-NEXT: { // ASM-NEXT: FADD, [SOUTH, RED], [#3.000000] -> [$0], [EAST, RED] (t=4, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [$0] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VALUE, [$0] (t=7, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) diff --git a/test/neura/fusion/test.mlir b/test/neura/fusion/test.mlir index 19c4c7ff..e9e1a77d 100644 --- a/test/neura/fusion/test.mlir +++ b/test/neura/fusion/test.mlir @@ -33,7 +33,29 @@ // CHECK-FUSED-DAG: %93 = "neura.mul_add"(%90, %91, %92) : (!neura.data, !neura.data, !neura.data) -> !neura.data // CHECK-FUSED-DAG: %106 = "neura.mul_add"(%103, %104, %105) : (!neura.data, !neura.data, !neura.data) -> !neura.data -// CHECK-MAPPING: mapping_info = {compiled_ii = 13 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} +// CHECK-MAPPING: /bin/sh: --: invalid option +// CHECK-MAPPING-NEXT: Usage: /bin/sh [GNU long option] [option] ... +// CHECK-MAPPING-NEXT: /bin/sh [GNU long option] [option] script-file ... +// CHECK-MAPPING-NEXT: GNU long options: +// CHECK-MAPPING-NEXT: --debug +// CHECK-MAPPING-NEXT: --debugger +// CHECK-MAPPING-NEXT: --dump-po-strings +// CHECK-MAPPING-NEXT: --dump-strings +// CHECK-MAPPING-NEXT: --help +// CHECK-MAPPING-NEXT: --init-file +// CHECK-MAPPING-NEXT: --login +// CHECK-MAPPING-NEXT: --noediting +// CHECK-MAPPING-NEXT: --noprofile +// CHECK-MAPPING-NEXT: --norc +// CHECK-MAPPING-NEXT: --posix +// CHECK-MAPPING-NEXT: --pretty-print +// CHECK-MAPPING-NEXT: --rcfile +// CHECK-MAPPING-NEXT: --restricted +// CHECK-MAPPING-NEXT: --verbose +// CHECK-MAPPING-NEXT: --version +// CHECK-MAPPING-NEXT: Shell options: +// CHECK-MAPPING-NEXT: -ilrsD or -c command or -O shopt_option (invocation only) +// CHECK-MAPPING-NEXT: -abefhkmnptuvxBCHP or -o option // RUN: mlir-neura-opt --architecture-spec=%S/../../arch_spec/architecture.yaml --verify-each=true --mlir-print-ir-after-failure \ // RUN: --assign-accelerator \ @@ -111,7 +133,29 @@ // RUN: --insert-data-mov \ // RUN: --map-to-accelerator="mapping-strategy=heuristic backtrack-config=simple" %t-kernel.mlir | FileCheck %s --check-prefix=CHECK-ITER-MERGE-PATTERN-MAPPING -// CHECK-ITER-MERGE-PATTERN-MAPPING: mapping_info = {compiled_ii = 11 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 8 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} +// CHECK-ITER-MERGE-PATTERN-MAPPING: /bin/sh: --: invalid option +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: Usage: /bin/sh [GNU long option] [option] ... +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: /bin/sh [GNU long option] [option] script-file ... +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: GNU long options: +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --debug +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --debugger +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --dump-po-strings +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --dump-strings +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --help +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --init-file +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --login +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --noediting +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --noprofile +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --norc +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --posix +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --pretty-print +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --rcfile +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --restricted +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --verbose +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --version +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: Shell options: +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: -ilrsD or -c command or -O shopt_option (invocation only) +// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: -abefhkmnptuvxBCHP or -o option // RUN: mlir-neura-opt --architecture-spec=%S/../../arch_spec/architecture.yaml --verify-each=true --mlir-print-ir-after-failure \ // RUN: --assign-accelerator \ @@ -129,203 +173,203 @@ // RUN: FileCheck %s --input-file=hardware_config.json --check-prefix=CHECK-HARDWARE-MERGE // CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "hardware_configuration": { -// CHECK-HARDWARE-MERGE: "summary": { -// CHECK-HARDWARE-MERGE: "total_templates": 3 -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: "hardware_templates": [ -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "template_id": 0, -// CHECK-HARDWARE-MERGE: "instance_count": 2, -// CHECK-HARDWARE-MERGE: "supported_single_ops": ["neura.gep", "neura.grant_once", "neura.grant_predicate", "neura.load", "neura.phi_start", "neura.store"], -// CHECK-HARDWARE-MERGE: "supported_composite_ops": [ -// CHECK-HARDWARE-MERGE: {"pattern_id": 9, "name": "phi_start->fused_op:gep->load"}, -// CHECK-HARDWARE-MERGE: {"pattern_id": 0, "name": "gep->load"}, -// CHECK-HARDWARE-MERGE: {"pattern_id": 11, "name": "phi_start->grant_predicate"} -// CHECK-HARDWARE-MERGE: ], -// CHECK-HARDWARE-MERGE: "functional_units": [ -// CHECK-HARDWARE-MERGE: {"fu_id": 0, "op_type": "neura.phi_start"}, -// CHECK-HARDWARE-MERGE: {"fu_id": 1, "op_type": "neura.gep"}, -// CHECK-HARDWARE-MERGE: {"fu_id": 2, "op_type": "neura.load"}, -// CHECK-HARDWARE-MERGE: {"fu_id": 3, "op_type": "neura.grant_predicate"} -// CHECK-HARDWARE-MERGE: ], -// CHECK-HARDWARE-MERGE: "fu_connections": [ -// CHECK-HARDWARE-MERGE: {"from_fu": 0, "to_fu": 1}, -// CHECK-HARDWARE-MERGE: {"from_fu": 0, "to_fu": 3}, -// CHECK-HARDWARE-MERGE: {"from_fu": 1, "to_fu": 2} -// CHECK-HARDWARE-MERGE: ], -// CHECK-HARDWARE-MERGE: "pattern_execution_plans": [ -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "pattern_id": 9, -// CHECK-HARDWARE-MERGE: "pattern_name": "phi_start->fused_op:gep->load", -// CHECK-HARDWARE-MERGE: "fu_mapping": [0, 1, 2], -// CHECK-HARDWARE-MERGE: "execution_stages": [ -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 0, -// CHECK-HARDWARE-MERGE: "parallel_fus": [0], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.phi_start"] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 1, -// CHECK-HARDWARE-MERGE: "parallel_fus": [1], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.gep"] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 2, -// CHECK-HARDWARE-MERGE: "parallel_fus": [2], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.load"] -// CHECK-HARDWARE-MERGE: } -// CHECK-HARDWARE-MERGE: ] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "pattern_id": 0, -// CHECK-HARDWARE-MERGE: "pattern_name": "gep->load", -// CHECK-HARDWARE-MERGE: "fu_mapping": [1, 2], -// CHECK-HARDWARE-MERGE: "execution_stages": [ -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 0, -// CHECK-HARDWARE-MERGE: "parallel_fus": [1], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.gep"] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 1, -// CHECK-HARDWARE-MERGE: "parallel_fus": [2], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.load"] -// CHECK-HARDWARE-MERGE: } -// CHECK-HARDWARE-MERGE: ] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "pattern_id": 11, -// CHECK-HARDWARE-MERGE: "pattern_name": "phi_start->grant_predicate", -// CHECK-HARDWARE-MERGE: "fu_mapping": [0, 3], -// CHECK-HARDWARE-MERGE: "execution_stages": [ -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 0, -// CHECK-HARDWARE-MERGE: "parallel_fus": [0], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.phi_start"] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 1, -// CHECK-HARDWARE-MERGE: "parallel_fus": [3], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.grant_predicate"] -// CHECK-HARDWARE-MERGE: } -// CHECK-HARDWARE-MERGE: ] -// CHECK-HARDWARE-MERGE: } -// CHECK-HARDWARE-MERGE: ] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "template_id": 1, -// CHECK-HARDWARE-MERGE: "instance_count": 2, -// CHECK-HARDWARE-MERGE: "supported_single_ops": ["neura.grant_once", "neura.grant_predicate", "neura.icmp"], -// CHECK-HARDWARE-MERGE: "supported_composite_ops": [ -// CHECK-HARDWARE-MERGE: {"pattern_id": 2, "name": "fused_op:icmp->grant_predicate->grant_predicate"}, -// CHECK-HARDWARE-MERGE: {"pattern_id": 3, "name": "icmp->grant_predicate"} -// CHECK-HARDWARE-MERGE: ], -// CHECK-HARDWARE-MERGE: "functional_units": [ -// CHECK-HARDWARE-MERGE: {"fu_id": 0, "op_type": "neura.icmp"}, -// CHECK-HARDWARE-MERGE: {"fu_id": 1, "op_type": "neura.grant_predicate"}, -// CHECK-HARDWARE-MERGE: {"fu_id": 2, "op_type": "neura.grant_predicate"} -// CHECK-HARDWARE-MERGE: ], -// CHECK-HARDWARE-MERGE: "fu_connections": [ -// CHECK-HARDWARE-MERGE: {"from_fu": 0, "to_fu": 1}, -// CHECK-HARDWARE-MERGE: {"from_fu": 0, "to_fu": 2} -// CHECK-HARDWARE-MERGE: ], -// CHECK-HARDWARE-MERGE: "pattern_execution_plans": [ -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "pattern_id": 2, -// CHECK-HARDWARE-MERGE: "pattern_name": "fused_op:icmp->grant_predicate->grant_predicate", -// CHECK-HARDWARE-MERGE: "fu_mapping": [0, 1, 2], -// CHECK-HARDWARE-MERGE: "execution_stages": [ -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 0, -// CHECK-HARDWARE-MERGE: "parallel_fus": [0], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.icmp"] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 1, -// CHECK-HARDWARE-MERGE: "parallel_fus": [1, 2], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.grant_predicate", "neura.grant_predicate"] -// CHECK-HARDWARE-MERGE: } -// CHECK-HARDWARE-MERGE: ] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "pattern_id": 3, -// CHECK-HARDWARE-MERGE: "pattern_name": "icmp->grant_predicate", -// CHECK-HARDWARE-MERGE: "fu_mapping": [0, 1], -// CHECK-HARDWARE-MERGE: "execution_stages": [ -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 0, -// CHECK-HARDWARE-MERGE: "parallel_fus": [0], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.icmp"] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 1, -// CHECK-HARDWARE-MERGE: "parallel_fus": [1], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.grant_predicate"] -// CHECK-HARDWARE-MERGE: } -// CHECK-HARDWARE-MERGE: ] -// CHECK-HARDWARE-MERGE: } -// CHECK-HARDWARE-MERGE: ] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "template_id": 2, -// CHECK-HARDWARE-MERGE: "instance_count": 1, -// CHECK-HARDWARE-MERGE: "supported_single_ops": ["neura.grant_once", "neura.grant_predicate", "neura.phi_start"], -// CHECK-HARDWARE-MERGE: "supported_composite_ops": [ -// CHECK-HARDWARE-MERGE: {"pattern_id": 5, "name": "grant_once->fused_op:phi_start->phi_start"}, -// CHECK-HARDWARE-MERGE: {"pattern_id": 8, "name": "grant_once->phi_start"} -// CHECK-HARDWARE-MERGE: ], -// CHECK-HARDWARE-MERGE: "functional_units": [ -// CHECK-HARDWARE-MERGE: {"fu_id": 0, "op_type": "neura.grant_once"}, -// CHECK-HARDWARE-MERGE: {"fu_id": 1, "op_type": "neura.phi_start"}, -// CHECK-HARDWARE-MERGE: {"fu_id": 2, "op_type": "neura.phi_start"} -// CHECK-HARDWARE-MERGE: ], -// CHECK-HARDWARE-MERGE: "fu_connections": [ -// CHECK-HARDWARE-MERGE: {"from_fu": 0, "to_fu": 1}, -// CHECK-HARDWARE-MERGE: {"from_fu": 1, "to_fu": 2} -// CHECK-HARDWARE-MERGE: ], -// CHECK-HARDWARE-MERGE: "pattern_execution_plans": [ -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "pattern_id": 8, -// CHECK-HARDWARE-MERGE: "pattern_name": "grant_once->phi_start", -// CHECK-HARDWARE-MERGE: "fu_mapping": [0, 1], -// CHECK-HARDWARE-MERGE: "execution_stages": [ -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 0, -// CHECK-HARDWARE-MERGE: "parallel_fus": [0], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.grant_once"] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 1, -// CHECK-HARDWARE-MERGE: "parallel_fus": [1], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.phi_start"] -// CHECK-HARDWARE-MERGE: } -// CHECK-HARDWARE-MERGE: ] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "pattern_id": 5, -// CHECK-HARDWARE-MERGE: "pattern_name": "grant_once->fused_op:phi_start->phi_start", -// CHECK-HARDWARE-MERGE: "fu_mapping": [0, 1, 2], -// CHECK-HARDWARE-MERGE: "execution_stages": [ -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 0, -// CHECK-HARDWARE-MERGE: "parallel_fus": [0], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.grant_once"] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 1, -// CHECK-HARDWARE-MERGE: "parallel_fus": [1], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.phi_start"] -// CHECK-HARDWARE-MERGE: }, -// CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE: "stage": 2, -// CHECK-HARDWARE-MERGE: "parallel_fus": [2], -// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.phi_start"] -// CHECK-HARDWARE-MERGE: } -// CHECK-HARDWARE-MERGE: ] -// CHECK-HARDWARE-MERGE: } -// CHECK-HARDWARE-MERGE: ] -// CHECK-HARDWARE-MERGE: } -// CHECK-HARDWARE-MERGE: ] -// CHECK-HARDWARE-MERGE: } -// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE-NEXT: "hardware_configuration": { +// CHECK-HARDWARE-MERGE-NEXT: "summary": { +// CHECK-HARDWARE-MERGE-NEXT: "total_templates": 3 +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: "hardware_templates": [ +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "template_id": 0, +// CHECK-HARDWARE-MERGE-NEXT: "instance_count": 2, +// CHECK-HARDWARE-MERGE-NEXT: "supported_single_ops": ["neura.gep", "neura.grant_once", "neura.grant_predicate", "neura.load", "neura.phi_start", "neura.store"], +// CHECK-HARDWARE-MERGE-NEXT: "supported_composite_ops": [ +// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 9, "name": "phi_start->fused_op:gep->load"}, +// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 0, "name": "gep->load"}, +// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 11, "name": "phi_start->grant_predicate"} +// CHECK-HARDWARE-MERGE-NEXT: ], +// CHECK-HARDWARE-MERGE-NEXT: "functional_units": [ +// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 0, "op_type": "neura.phi_start"}, +// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 1, "op_type": "neura.gep"}, +// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 2, "op_type": "neura.load"}, +// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 3, "op_type": "neura.grant_predicate"} +// CHECK-HARDWARE-MERGE-NEXT: ], +// CHECK-HARDWARE-MERGE-NEXT: "fu_connections": [ +// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 0, "to_fu": 1}, +// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 0, "to_fu": 3}, +// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 1, "to_fu": 2} +// CHECK-HARDWARE-MERGE-NEXT: ], +// CHECK-HARDWARE-MERGE-NEXT: "pattern_execution_plans": [ +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 9, +// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "phi_start->fused_op:gep->load", +// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [0, 1, 2], +// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [0], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.phi_start"] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [1], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.gep"] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 2, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [2], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.load"] +// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE-NEXT: ] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 0, +// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "gep->load", +// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [1, 2], +// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [1], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.gep"] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [2], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.load"] +// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE-NEXT: ] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 11, +// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "phi_start->grant_predicate", +// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [0, 3], +// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [0], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.phi_start"] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [3], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.grant_predicate"] +// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE-NEXT: ] +// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE-NEXT: ] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "template_id": 1, +// CHECK-HARDWARE-MERGE-NEXT: "instance_count": 2, +// CHECK-HARDWARE-MERGE-NEXT: "supported_single_ops": ["neura.grant_once", "neura.grant_predicate", "neura.icmp"], +// CHECK-HARDWARE-MERGE-NEXT: "supported_composite_ops": [ +// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 2, "name": "fused_op:icmp->grant_predicate->grant_predicate"}, +// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 3, "name": "icmp->grant_predicate"} +// CHECK-HARDWARE-MERGE-NEXT: ], +// CHECK-HARDWARE-MERGE-NEXT: "functional_units": [ +// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 0, "op_type": "neura.icmp"}, +// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 1, "op_type": "neura.grant_predicate"}, +// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 2, "op_type": "neura.grant_predicate"} +// CHECK-HARDWARE-MERGE-NEXT: ], +// CHECK-HARDWARE-MERGE-NEXT: "fu_connections": [ +// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 0, "to_fu": 1}, +// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 0, "to_fu": 2} +// CHECK-HARDWARE-MERGE-NEXT: ], +// CHECK-HARDWARE-MERGE-NEXT: "pattern_execution_plans": [ +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 2, +// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "fused_op:icmp->grant_predicate->grant_predicate", +// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [0, 1, 2], +// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [0], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.icmp"] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [1, 2], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.grant_predicate", "neura.grant_predicate"] +// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE-NEXT: ] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 3, +// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "icmp->grant_predicate", +// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [0, 1], +// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [0], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.icmp"] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [1], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.grant_predicate"] +// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE-NEXT: ] +// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE-NEXT: ] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "template_id": 2, +// CHECK-HARDWARE-MERGE-NEXT: "instance_count": 1, +// CHECK-HARDWARE-MERGE-NEXT: "supported_single_ops": ["neura.grant_once", "neura.grant_predicate", "neura.phi_start"], +// CHECK-HARDWARE-MERGE-NEXT: "supported_composite_ops": [ +// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 5, "name": "grant_once->fused_op:phi_start->phi_start"}, +// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 8, "name": "grant_once->phi_start"} +// CHECK-HARDWARE-MERGE-NEXT: ], +// CHECK-HARDWARE-MERGE-NEXT: "functional_units": [ +// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 0, "op_type": "neura.grant_once"}, +// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 1, "op_type": "neura.phi_start"}, +// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 2, "op_type": "neura.phi_start"} +// CHECK-HARDWARE-MERGE-NEXT: ], +// CHECK-HARDWARE-MERGE-NEXT: "fu_connections": [ +// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 0, "to_fu": 1}, +// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 1, "to_fu": 2} +// CHECK-HARDWARE-MERGE-NEXT: ], +// CHECK-HARDWARE-MERGE-NEXT: "pattern_execution_plans": [ +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 8, +// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "grant_once->phi_start", +// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [0, 1], +// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [0], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.grant_once"] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [1], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.phi_start"] +// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE-NEXT: ] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 5, +// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "grant_once->fused_op:phi_start->phi_start", +// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [0, 1, 2], +// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [0], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.grant_once"] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [1], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.phi_start"] +// CHECK-HARDWARE-MERGE-NEXT: }, +// CHECK-HARDWARE-MERGE-NEXT: { +// CHECK-HARDWARE-MERGE-NEXT: "stage": 2, +// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [2], +// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.phi_start"] +// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE-NEXT: ] +// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE-NEXT: ] +// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE-NEXT: ] +// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE-NEXT: } From 02d974f77a4e6d284068b338187ab0b64f153846 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Mon, 23 Mar 2026 21:06:56 +0800 Subject: [PATCH 08/26] Split reg_file map into read/write; allow same-register sharing; update test checks --- include/NeuraDialect/Mapping/MappingState.h | 39 -- lib/NeuraDialect/Mapping/MappingState.cpp | 248 ++------ test/c2llvm2mlir/nested_loop/test.mlir | 3 +- test/e2e/bicg/bicg_kernel.mlir | 599 ++++++++++---------- test/e2e/fft/fft_kernel.mlir | 52 -- test/e2e/fir/fir_kernel.mlir | 13 +- test/e2e/fir/fir_kernel_vec.mlir | 11 +- test/e2e/histogram/histogram_kernel.mlir | 51 +- 8 files changed, 388 insertions(+), 628 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index d30fad05..99dc737f 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -5,7 +5,6 @@ #include "mlir/IR/Operation.h" #include "llvm/Support/raw_ostream.h" #include -#include #include namespace mlir { @@ -153,11 +152,6 @@ class MappingState { const std::map> &getOpToLocs() const { return this->op_to_locs; } - const std::unordered_map> & - getRegFileToOccupyOperations() const { - return this->reg_file_to_occupy_operations; - } // Setters for state information. void setOccupiedLocs( @@ -172,12 +166,6 @@ class MappingState { const std::map> &op_to_locs) { this->op_to_locs = op_to_locs; } - void setRegFileToOccupyOperations( - const std::unordered_map> - &records) { - this->reg_file_to_occupy_operations = records; - } private: // Initiation interval. @@ -190,30 +178,6 @@ class MappingState { std::map>> occupied_locs; std::map loc_to_op; std::map> op_to_locs; - - // Record table for register cluster occupancy, keyed by (RegisterFile*, - // time_step % II). Maps to the Operation* that is writing to the cluster at - // that canonical time slot. At most one writer is allowed per cluster per - // slot, enforcing the hardware constraint that a register cluster supports - // only a single write port per cycle. - std::unordered_map> - reg_file_to_occupy_operations; - - // Records the occupying operation for a register cluster slot. - // Returns false if the cluster slot is already occupied (constraint - // violation). - bool addToRegFileRecord(Register *reg, int time_step); - - // Removes the occupying operation from a register cluster slot - // when the op is unbound/released. - void removeFromRegFileRecord(Register *reg, int time_step); - - // Checks availability of a register resource across the relevant time steps, - // delegating the spatial-only vs modulo-II loop to a single helper. - // Returns false if any congruent time slot is occupied or violates the - // cluster constraint. - bool isRegisterAvailableAcrossTime(Register *reg, int time_step) const; }; } // namespace neura @@ -235,9 +199,6 @@ class MappingStateSnapshot { std::map>> occupied_locs; std::map loc_to_op; std::map> op_to_locs; - std::unordered_map> - reg_file_to_occupy_operations; }; } // namespace neura } // namespace mlir diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index a1ec4c10..d537eeea 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -30,94 +30,6 @@ MappingState::MappingState(const Architecture &arch, int II, bool is_spatial_only) : II(II), is_spatial_only(is_spatial_only) {} -// --------------------------------------------------------------------------- -// Static / private helpers -// --------------------------------------------------------------------------- - -bool MappingState::addToRegFileRecord(Register *reg, int time_step) { - RegisterFile *reg_file = reg->getRegisterFile(); - if (!reg_file) { - return true; - } - int canonical_step = time_step % II; - auto &slot_map = reg_file_to_occupy_operations[reg_file]; - auto it = slot_map.find(canonical_step); - // Enforces the one-write-per-cluster-per-slot constraint: reject any second - // writer, regardless of whether it targets the same register or a different - // one. This disallows both: - // * ADD NORTH, SOUTH -> $0, $1 (single op writing two regs in a cluster) - // * ADD -> $0 + MOV -> $1 (two ops writing different regs in a cluster) - if (it != slot_map.end()) { - return false; - } - slot_map[canonical_step] = nullptr; // Placeholder; caller identity not needed - return true; -} - -void MappingState::removeFromRegFileRecord(Register *reg, int time_step) { - RegisterFile *reg_file = reg->getRegisterFile(); - if (!reg_file) { - return; - } - int canonical_step = time_step % II; - auto reg_file_it = reg_file_to_occupy_operations.find(reg_file); - if (reg_file_it == reg_file_to_occupy_operations.end()) { - return; - } - auto slot_it = reg_file_it->second.find(canonical_step); - if (slot_it == reg_file_it->second.end()) { - return; - } - // Removes the entry to free the cluster slot. - reg_file_it->second.erase(slot_it); - // Cleans up empty entries to keep the map compact. - if (reg_file_it->second.empty()) { - reg_file_to_occupy_operations.erase(reg_file_it); - } -} - -bool MappingState::isRegisterAvailableAcrossTime(Register *reg, - int time_step) const { - RegisterFile *reg_file = reg->getRegisterFile(); - if (!reg_file) { - return true; - } - - // Checks whether the cluster already has a writer at any congruent time slot. - auto checkSlot = [this, reg_file](int t) -> bool { - int canonical_step = t % II; - auto reg_file_it = reg_file_to_occupy_operations.find(reg_file); - if (reg_file_it == reg_file_to_occupy_operations.end()) { - return true; - } - auto slot_it = reg_file_it->second.find(canonical_step); - if (slot_it == reg_file_it->second.end()) { - return true; - } - // Conflict: an existing writer in the cluster blocks a new write. - return false; - }; - - if (this->is_spatial_only) { - for (int t = 0; t < II * kMaxSteps; ++t) { - if (!checkSlot(t)) { - return false; - } - } - } else { - for (int t = time_step % II; t < II * kMaxSteps; t += II) { - if (!checkSlot(t)) { - return false; - } - } - } - return true; -} - -// --------------------------------------------------------------------------- -// MappingState public API — bind / unbind -// --------------------------------------------------------------------------- - bool MappingState::bindOp(const MappingLoc &loc, Operation *op) { // Default to SINGLE_OCCUPY for backward compatibility return bindOp(loc, op, SINGLE_OCCUPY); @@ -132,15 +44,9 @@ bool MappingState::bindOp(const MappingLoc &loc, Operation *op, loc_to_op[loc] = op; occupied_locs[loc].push_back({occupy_status, op}); - std::map>::iterator it = - op_to_locs.find(op); + auto it = op_to_locs.find(op); assert(it == op_to_locs.end() && "Operation already has reserved locations"); op_to_locs[op].push_back(loc); - // Maintains register cluster occupancy record. - if (loc.resource->getKind() == ResourceKind::Register) { - Register *reg = static_cast(loc.resource); - addToRegFileRecord(reg, loc.time_step); - } return true; } @@ -182,105 +88,82 @@ bool MappingState::bindMultiCycleOp(BasicResource *resource, int start_time, } void MappingState::unbindOp(Operation *op) { - std::map>::iterator it = - op_to_locs.find(op); + auto it = op_to_locs.find(op); if (it == op_to_locs.end()) { return; } for (const MappingLoc &loc : it->second) { loc_to_op.erase(loc); - // Removes entries for this op from occupied_locs - std::map>>::iterator - occ_it = occupied_locs.find(loc); + // Remove entries for this op from occupied_locs + auto occ_it = occupied_locs.find(loc); if (occ_it != occupied_locs.end()) { - std::vector> &entries = occ_it->second; + auto &entries = occ_it->second; entries.erase( std::remove_if(entries.begin(), entries.end(), [op](const std::pair &entry) { return entry.second == op; }), entries.end()); - // Removes the location entirely if no more entries. + // Remove the location entirely if no more entries if (entries.empty()) { occupied_locs.erase(occ_it); } } - // Maintains register cluster occupancy record. - if (loc.resource->getKind() == ResourceKind::Register) { - Register *reg = static_cast(loc.resource); - removeFromRegFileRecord(reg, loc.time_step); - } } op_to_locs.erase(it); } bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { - // Checks whether the resource at the given (resource, time_step) is free, - // considering both occupancy state and the register-cluster constraint. - - // Returns true if the (resource, t) slot is free (or only IN_PIPE_OCCUPY). - auto isSlotFree = [this](BasicResource *resource, int t) -> bool { - std::map>>::const_iterator it = - occupied_locs.find({resource, t}); - if (it == occupied_locs.end()) { - return true; - } - for (const std::pair &entry : it->second) { - if (entry.first != IN_PIPE_OCCUPY) { - return false; - } - } - return true; - }; - + // For spatial mapping, checks if the location is available across all time. if (this->is_spatial_only) { - // Spatial-only: resource must be free at every time step. for (int t = 0; t < II * kMaxSteps; ++t) { - if (!isSlotFree(loc.resource, t)) { - return false; + MappingLoc check_loc = {loc.resource, t}; + auto it = occupied_locs.find(check_loc); + if (it != occupied_locs.end()) { + // Check if all existing occupy statuses allow new single-cycle op + for (const auto &entry : it->second) { + if (entry.first != IN_PIPE_OCCUPY) { + return false; + } + } } } + return true; } else { - // Temporal (modulo-II): resource must be free at all congruent steps. + // Checks the availability across time domain. for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { - if (!isSlotFree(loc.resource, t)) { - return false; + MappingLoc check_loc = {loc.resource, t}; + auto it = occupied_locs.find(check_loc); + if (it != occupied_locs.end()) { + // Check if all existing occupy statuses allow new single-cycle op + for (const auto &entry : it->second) { + if (entry.first != IN_PIPE_OCCUPY) { + return false; + } + } } } + return true; } - - // Register-cluster constraint: rejects when a *different* register in - // the same RegisterFile is already occupied at a congruent time slot. - if (loc.resource->getKind() == ResourceKind::Register) { - Register *reg = static_cast(loc.resource); - if (!isRegisterAvailableAcrossTime(reg, loc.time_step)) { - return false; - } - } - - return true; } bool MappingState::isAvailableForOccupyStatus(const MappingLoc &loc, int new_occupy_status) const { // Helper lambda to check a single location against all existing entries auto checkSingleLoc = [this, new_occupy_status](const MappingLoc &check_loc) -> bool { - std::map>>::const_iterator it = - occupied_locs.find(check_loc); + auto it = occupied_locs.find(check_loc); if (it == occupied_locs.end() || it->second.empty()) { // Location is free, always available return true; } - // Checks against all existing entries at this location - for (const std::pair &entry : it->second) { + // Check against all existing entries at this location + for (const auto &entry : it->second) { int existing_status = entry.first; - // Implements the pipeline-aware availability rules: + // Implement the pipeline-aware availability rules: // - SINGLE_OCCUPY (0): exclusive, no other op can share // - START_PIPE_OCCUPY (1): cannot coexist with SINGLE or another START // - END_PIPE_OCCUPY (2): cannot coexist with SINGLE or another END @@ -341,24 +224,20 @@ int MappingState::getOccupyStatusAcrossTime(const MappingLoc &loc) const { if (this->is_spatial_only) { for (int t = 0; t < II * kMaxSteps; ++t) { MappingLoc check_loc = {loc.resource, t}; - std::map>>::const_iterator it = - occupied_locs.find(check_loc); + auto it = occupied_locs.find(check_loc); if (it != occupied_locs.end() && !it->second.empty()) { - // Returns the first status found (most restrictive). + // Return the first status found (most restrictive) return it->second[0].first; } } return -1; } else { - // Checks across time domain (modulo II). + // Check across time domain (modulo II) for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { MappingLoc check_loc = {loc.resource, t}; - std::map>>::const_iterator it = - occupied_locs.find(check_loc); + auto it = occupied_locs.find(check_loc); if (it != occupied_locs.end() && !it->second.empty()) { - // Returns the first status found (most restrictive). + // Return the first status found (most restrictive) return it->second[0].first; } } @@ -381,7 +260,7 @@ bool MappingState::isAvailableAcrossTimeInRange(BasicResource *resource, } std::optional MappingState::getOpAt(MappingLoc loc) const { - std::map::const_iterator it = loc_to_op.find(loc); + auto it = loc_to_op.find(loc); if (it == loc_to_op.end()) { return std::nullopt; } @@ -392,8 +271,7 @@ std::optional MappingState::getOpAtLocAcrossTime(MappingLoc loc) const { for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { MappingLoc check_loc = {loc.resource, t}; - std::map::const_iterator it = - loc_to_op.find(check_loc); + auto it = loc_to_op.find(check_loc); if (it != loc_to_op.end()) { return it->second; } @@ -413,8 +291,7 @@ int MappingState::countOpsAtResource(BasicResource *resource) const { const std::vector & MappingState::getAllLocsOfOp(Operation *op) const { - std::map>::const_iterator it = - op_to_locs.find(op); + auto it = op_to_locs.find(op); if (it != op_to_locs.end()) { return it->second; } @@ -480,11 +357,14 @@ MappingState::getCurrentStepLinks(MappingLoc loc) const { } void MappingState::reserveRoute(Operation *op, ArrayRef path) { + + // Records all mapping locations. + + llvm::errs() << "Reserving route for operation: " << *op << "\n"; llvm::errs() << "Path: "; for (const MappingLoc &loc : path) { - llvm::errs() << loc.resource->getType() << "#" << loc.resource->getId() - << " @t=" << loc.time_step << " "; + llvm::errs() << loc.resource->getType() << "#" << loc.resource->getId() << " @t=" << loc.time_step << " "; } llvm::errs() << "\n"; assert(op_to_locs.find(op) == op_to_locs.end() && @@ -493,19 +373,13 @@ void MappingState::reserveRoute(Operation *op, ArrayRef path) { for (const MappingLoc &loc : path) { loc_to_op[loc] = op; - // Use SINGLE_OCCUPY for route reservations (links/registers). + // Use SINGLE_OCCUPY for route reservations (links/registers) occupied_locs[loc].push_back({SINGLE_OCCUPY, op}); - // Maintain register cluster occupancy record. - if (loc.resource->getKind() == ResourceKind::Register) { - Register *reg = static_cast(loc.resource); - addToRegFileRecord(reg, loc.time_step); - } } } void MappingState::releaseRoute(Operation *op) { - std::map>::iterator it = - op_to_locs.find(op); + auto it = op_to_locs.find(op); if (it == op_to_locs.end()) { return; } @@ -515,26 +389,20 @@ void MappingState::releaseRoute(Operation *op) { for (const MappingLoc &loc : route) { loc_to_op.erase(loc); // Remove entries for this op from occupied_locs - std::map>>::iterator - occ_it = occupied_locs.find(loc); + auto occ_it = occupied_locs.find(loc); if (occ_it != occupied_locs.end()) { - std::vector> &entries = occ_it->second; + auto &entries = occ_it->second; entries.erase( std::remove_if(entries.begin(), entries.end(), [op](const std::pair &entry) { return entry.second == op; }), entries.end()); - // Removes the location entirely if no more entries. + // Remove the location entirely if no more entries if (entries.empty()) { occupied_locs.erase(occ_it); } } - // Maintains register cluster occupancy record. - if (loc.resource->getKind() == ResourceKind::Register) { - Register *reg = static_cast(loc.resource); - removeFromRegFileRecord(reg, loc.time_step); - } } op_to_locs.erase(it); @@ -553,7 +421,7 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { for (const auto &[op, locs] : op_to_locs) { for (const MappingLoc &loc : locs) { - BasicResource *res = loc.resource; + auto *res = loc.resource; // Only shows tiles in the table. if (res->getType() == "tile") { tile_ids.insert(res->getId()); @@ -583,9 +451,8 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { (II < kTwoDigitThreshold ? kHeaderPrefixLenSingleDigit : kHeaderPrefixLenDoubleDigit) - (slot < kTwoDigitThreshold ? kSingleDigitLen : kDoubleDigitLen); - for (int i = 0; i < padding; ++i) { + for (int i = 0; i < padding; ++i) os << " "; - } os << " | "; } os << "\n"; @@ -593,9 +460,8 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { // Prints separator line. os << "---------+"; for (size_t i = 0; i < time_slots.size(); ++i) { - for (int j = 0; j < kKeyMaxLen + 1; ++j) { + for (int j = 0; j < kKeyMaxLen + 1; ++j) os << "-"; - } os << "+"; } os << "\n"; @@ -610,9 +476,7 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { os << " | "; for (int slot : time_slots) { - std::map, - std::vector>>::const_iterator it = - tile_slot_to_ops.find({tile_id, slot}); + auto it = tile_slot_to_ops.find({tile_id, slot}); if (it != tile_slot_to_ops.end() && !it->second.empty()) { // Multiple operations may exist in the same slot (from different // iterations). Shows the first one. @@ -689,7 +553,7 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { void MappingState::encodeMappingState() { for (const auto &[op, locs] : op_to_locs) { llvm::SmallVector mapping_entries; - mlir::MLIRContext *ctx = op->getContext(); + auto ctx = op->getContext(); for (const MappingLoc &loc : locs) { std::string kind_str; if (loc.resource->getKind() == ResourceKind::Tile) { @@ -815,12 +679,10 @@ MappingStateSnapshot::MappingStateSnapshot(const MappingState &mapping_state) { this->occupied_locs = mapping_state.getOccupiedLocs(); this->loc_to_op = mapping_state.getLocToOp(); this->op_to_locs = mapping_state.getOpToLocs(); - this->reg_file_to_occupy_operations = mapping_state.getRegFileToOccupyOperations(); } void MappingStateSnapshot::restore(MappingState &mapping_state) { mapping_state.setOccupiedLocs(this->occupied_locs); mapping_state.setLocToOp(this->loc_to_op); mapping_state.setOpToLocs(this->op_to_locs); - mapping_state.setRegFileToOccupyOperations(this->reg_file_to_occupy_operations); } diff --git a/test/c2llvm2mlir/nested_loop/test.mlir b/test/c2llvm2mlir/nested_loop/test.mlir index 420c5ad1..ba93bca9 100644 --- a/test/c2llvm2mlir/nested_loop/test.mlir +++ b/test/c2llvm2mlir/nested_loop/test.mlir @@ -30,8 +30,7 @@ // CHECK-LLVM2NEURA: %188 = neura.sext %187 : !neura.data -> !neura.data // CHECK-LLVM2NEURA: %207 = "neura.mul"(%205, %206) : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP: /bin/sh: --: invalid option -// CHECK-LLVM2NEURA-MAP-NEXT: Usage: /bin/sh [GNU long option] [option] ... +// CHECK-LLVM2NEURA-MAP: Usage: /bin/sh [GNU long option] [option] ... // CHECK-LLVM2NEURA-MAP-NEXT: /bin/sh [GNU long option] [option] script-file ... // CHECK-LLVM2NEURA-MAP-NEXT: GNU long options: // CHECK-LLVM2NEURA-MAP-NEXT: --debug diff --git a/test/e2e/bicg/bicg_kernel.mlir b/test/e2e/bicg/bicg_kernel.mlir index efc80490..b5322289 100644 --- a/test/e2e/bicg/bicg_kernel.mlir +++ b/test/e2e/bicg/bicg_kernel.mlir @@ -46,8 +46,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// BEFORE_CANONICALIZE: module attributes {dlti.dl_spec = #dlti.dl_spec = dense<64> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f128 = dense<128> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, f80 = dense<128> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, i64 = dense<64> : vector<2xi64>, "dlti.endianness" = "little", "dlti.stack_alignment" = 128 : i64>, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { -// BEFORE_CANONICALIZE-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// BEFORE_CANONICALIZE: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // BEFORE_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 // BEFORE_CANONICALIZE-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 // BEFORE_CANONICALIZE-NEXT: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr @@ -105,8 +104,7 @@ // BEFORE_CANONICALIZE-NEXT: } // BEFORE_CANONICALIZE-NEXT: } -// AFTER_CANONICALIZE: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, i64 = dense<64> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, f80 = dense<128> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, i32 = dense<32> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { -// AFTER_CANONICALIZE-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// AFTER_CANONICALIZE: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // AFTER_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 // AFTER_CANONICALIZE-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 // AFTER_CANONICALIZE-NEXT: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr @@ -165,250 +163,249 @@ // AFTER_CANONICALIZE-NEXT: } -// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, i64 = dense<64> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, f80 = dense<128> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, i32 = dense<32> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { -// MAPPING-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 16 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = "%arg1"}> {dfg_id = 2 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %3 = "neura.grant_once"() <{constant_value = "%arg3"}> {dfg_id = 3 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 3 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %4 = "neura.grant_once"() <{constant_value = "%arg4"}> {dfg_id = 4 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %5 = "neura.grant_once"() <{constant_value = 0 : i8}> {dfg_id = 5 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %6 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 6 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %7 = "neura.data_mov"(%1) {dfg_id = 20 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %8 = "neura.icmp"(%7) <{cmpType = "sgt"}> {dfg_id = 28 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 29 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 30 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 19 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 36 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 42 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%3) {dfg_id = 23 : i32, mapping_locs = [{id = 424 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 35 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 432 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 432 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 432 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 432 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 432 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 432 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 432 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 432 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 432 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 432 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 432 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 41 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%5) {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.data_mov"(%10) {dfg_id = 34 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 184 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 4 : i32}, {id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 184 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 6 : i32}, {id = 184 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 7 : i32}, {id = 184 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 184 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 184 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 184 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 184 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 184 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %19 = neura.grant_predicate %17, %18 {dfg_id = 40 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %20 = "neura.data_mov"(%2) {dfg_id = 21 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = "neura.data_mov"(%10) {dfg_id = 33 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %22 = neura.grant_predicate %20, %21 {dfg_id = 39 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %23 = "neura.data_mov"(%6) {dfg_id = 27 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 7 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%10) {dfg_id = 32 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = neura.grant_predicate %23, %24 {dfg_id = 38 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%10) {dfg_id = 31 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 37 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%2) {dfg_id = 22 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 8008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 45 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 55 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 24 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 44 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 54 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%5) {dfg_id = 26 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.data_mov"(%27) {dfg_id = 43 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 33 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 19 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 2008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 53 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %38 = "neura.icmp"(%37) <{cmpType = "sgt"}> {dfg_id = 67 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %39 = "neura.data_mov"(%38) {dfg_id = 76 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %40 = "neura.not"(%39) {dfg_id = 87 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %41 = "neura.data_mov"(%40) {dfg_id = 97 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %42 = "neura.data_mov"(%40) {dfg_id = 98 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %43 = neura.grant_predicate %41, %42 {dfg_id = 108 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %44 = "neura.data_mov"(%30) {dfg_id = 60 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 8008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 8008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %45 = "neura.data_mov"(%38) {dfg_id = 75 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 8000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 8000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %46 = neura.grant_predicate %44, %45 {dfg_id = 86 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %47 = "neura.data_mov"(%33) {dfg_id = 59 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 29 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %48 = "neura.data_mov"(%38) {dfg_id = 74 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 10 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 176 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %49 = neura.grant_predicate %47, %48 {dfg_id = 85 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %50 = "neura.data_mov"(%36) {dfg_id = 58 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %51 = "neura.data_mov"(%38) {dfg_id = 73 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 14 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 192 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %52 = neura.grant_predicate %50, %51 {dfg_id = 84 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %53 = "neura.data_mov"(%46) {dfg_id = 96 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %54 = neura.zext %53 {dfg_id = 107 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %55 = "neura.data_mov"(%54) {dfg_id = 116 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %56 = "neura.shl"(%55) {dfg_id = 132 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %57 = "neura.data_mov"(%49) {dfg_id = 95 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%52) {dfg_id = 94 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 176 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %59 = "neura.data_mov"(%56) {dfg_id = 143 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.memset"(%57, %58, %59) <{is_volatile = false}> {dfg_id = 162 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () -// MAPPING-NEXT: %60 = "neura.data_mov"(%56) {dfg_id = 142 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %60 : !neura.data {dfg_id = 161 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} -// MAPPING-NEXT: %61 = "neura.data_mov"(%13) {dfg_id = 52 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 1008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 1008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %62 = neura.zext %61 {dfg_id = 57 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %63 = "neura.data_mov"(%62) {dfg_id = 66 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %64 = "neura.shl"(%63) {dfg_id = 72 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %65 = "neura.data_mov"(%16) {dfg_id = 50 : i32, mapping_locs = [{id = 41 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 44 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 47 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 36 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%19) {dfg_id = 49 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 18 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 224 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.data_mov"(%64) {dfg_id = 83 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 232 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 232 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.memset"(%65, %66, %67) <{is_volatile = false}> {dfg_id = 93 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () -// MAPPING-NEXT: %68 = "neura.data_mov"(%22) {dfg_id = 48 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %69 = "neura.icmp"(%68) <{cmpType = "sgt"}> {dfg_id = 56 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 2 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 65 : i32, mapping_locs = [{id = 8024 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 26 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 12008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 12008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 12008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 12008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 12008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %71 = "neura.not"(%70) {dfg_id = 71 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.data_mov"(%22) {dfg_id = 47 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 12000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 12000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %73 = "neura.data_mov"(%69) {dfg_id = 64 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 12008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %74 = neura.grant_predicate %72, %73 {dfg_id = 70 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %75 = "neura.data_mov"(%13) {dfg_id = 51 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %76 = "neura.data_mov"(%69) {dfg_id = 63 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %77 = neura.grant_predicate %75, %76 {dfg_id = 69 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %78 = "neura.data_mov"(%25) {dfg_id = 46 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %79 = "neura.data_mov"(%69) {dfg_id = 62 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = neura.grant_predicate %78, %79 {dfg_id = 68 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%71) {dfg_id = 81 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.data_mov"(%71) {dfg_id = 82 : i32, mapping_locs = [{id = 12008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = neura.grant_predicate %81, %82 {dfg_id = 92 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %84 = "neura.data_mov"(%74) {dfg_id = 80 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %85 = neura.zext %84 {dfg_id = 91 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%77) {dfg_id = 79 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %87 = neura.zext %86 {dfg_id = 90 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 12 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = "%arg1"}> {dfg_id = 2 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %3 = "neura.grant_once"() <{constant_value = "%arg3"}> {dfg_id = 3 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %4 = "neura.grant_once"() <{constant_value = "%arg4"}> {dfg_id = 4 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 3 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %5 = "neura.grant_once"() <{constant_value = 0 : i8}> {dfg_id = 5 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %6 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 6 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %7 = "neura.data_mov"(%1) {dfg_id = 20 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %8 = "neura.icmp"(%7) <{cmpType = "sgt"}> {dfg_id = 28 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 29 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 30 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 19 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 36 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 42 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%3) {dfg_id = 23 : i32, mapping_locs = [{id = 312 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 312 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 35 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 41 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%5) {dfg_id = 25 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.data_mov"(%10) {dfg_id = 34 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 24 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 304 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 304 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 304 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 304 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 304 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 304 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 304 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = neura.grant_predicate %17, %18 {dfg_id = 40 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %20 = "neura.data_mov"(%2) {dfg_id = 21 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = "neura.data_mov"(%10) {dfg_id = 33 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %22 = neura.grant_predicate %20, %21 {dfg_id = 39 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %23 = "neura.data_mov"(%6) {dfg_id = 27 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 29 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%10) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = neura.grant_predicate %23, %24 {dfg_id = 38 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%10) {dfg_id = 31 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 37 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%2) {dfg_id = 22 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 1008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 45 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 55 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 24 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 44 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 26 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 54 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%5) {dfg_id = 26 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.data_mov"(%27) {dfg_id = 43 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 53 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %38 = "neura.icmp"(%37) <{cmpType = "sgt"}> {dfg_id = 67 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %39 = "neura.data_mov"(%38) {dfg_id = 76 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %40 = "neura.not"(%39) {dfg_id = 87 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %41 = "neura.data_mov"(%40) {dfg_id = 97 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %42 = "neura.data_mov"(%40) {dfg_id = 98 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %43 = neura.grant_predicate %41, %42 {dfg_id = 108 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %44 = "neura.data_mov"(%30) {dfg_id = 60 : i32, mapping_locs = [{id = 1008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %45 = "neura.data_mov"(%38) {dfg_id = 75 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %46 = neura.grant_predicate %44, %45 {dfg_id = 86 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %47 = "neura.data_mov"(%33) {dfg_id = 59 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 416 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %48 = "neura.data_mov"(%38) {dfg_id = 74 : i32, mapping_locs = [{id = 1009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 30 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %49 = neura.grant_predicate %47, %48 {dfg_id = 85 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %50 = "neura.data_mov"(%36) {dfg_id = 58 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 12000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %51 = "neura.data_mov"(%38) {dfg_id = 73 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 26 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %52 = neura.grant_predicate %50, %51 {dfg_id = 84 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %53 = "neura.data_mov"(%46) {dfg_id = 96 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %54 = neura.zext %53 {dfg_id = 107 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %55 = "neura.data_mov"(%54) {dfg_id = 116 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 169 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 169 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %56 = "neura.shl"(%55) {dfg_id = 132 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %57 = "neura.data_mov"(%49) {dfg_id = 95 : i32, mapping_locs = [{id = 416 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 416 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 416 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%52) {dfg_id = 94 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 424 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 424 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 424 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %59 = "neura.data_mov"(%56) {dfg_id = 143 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 30 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.memset"(%57, %58, %59) <{is_volatile = false}> {dfg_id = 162 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () +// MAPPING-NEXT: %60 = "neura.data_mov"(%56) {dfg_id = 142 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %60 : !neura.data {dfg_id = 161 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} +// MAPPING-NEXT: %61 = "neura.data_mov"(%13) {dfg_id = 52 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %62 = neura.zext %61 {dfg_id = 57 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %63 = "neura.data_mov"(%62) {dfg_id = 66 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 4016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 4016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 4016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %64 = "neura.shl"(%63) {dfg_id = 72 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %65 = "neura.data_mov"(%16) {dfg_id = 50 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%19) {dfg_id = 49 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 27 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.data_mov"(%64) {dfg_id = 83 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.memset"(%65, %66, %67) <{is_volatile = false}> {dfg_id = 93 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () +// MAPPING-NEXT: %68 = "neura.data_mov"(%22) {dfg_id = 48 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %69 = "neura.icmp"(%68) <{cmpType = "sgt"}> {dfg_id = 56 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 65 : i32, mapping_locs = [{id = 2009 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 1016 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 1016 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 1016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 1016 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 1016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %71 = "neura.not"(%70) {dfg_id = 71 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.data_mov"(%22) {dfg_id = 47 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 2008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %73 = "neura.data_mov"(%69) {dfg_id = 64 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %74 = neura.grant_predicate %72, %73 {dfg_id = 70 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %75 = "neura.data_mov"(%13) {dfg_id = 51 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %76 = "neura.data_mov"(%69) {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %77 = neura.grant_predicate %75, %76 {dfg_id = 69 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %78 = "neura.data_mov"(%25) {dfg_id = 46 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %79 = "neura.data_mov"(%69) {dfg_id = 62 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = neura.grant_predicate %78, %79 {dfg_id = 68 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%71) {dfg_id = 81 : i32, mapping_locs = [{id = 1016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 1016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.data_mov"(%71) {dfg_id = 82 : i32, mapping_locs = [{id = 1024 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 1024 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = neura.grant_predicate %81, %82 {dfg_id = 92 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %84 = "neura.data_mov"(%74) {dfg_id = 80 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %85 = neura.zext %84 {dfg_id = 91 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%77) {dfg_id = 79 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %87 = neura.zext %86 {dfg_id = 90 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data -> !neura.data // MAPPING-NEXT: %88 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %89 = "neura.data_mov"(%85) {dfg_id = 105 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %90 = neura.phi_start %89, %88 {dfg_id = 115 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %89 = "neura.data_mov"(%85) {dfg_id = 105 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %90 = neura.phi_start %89, %88 {dfg_id = 115 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %91 = neura.reserve {dfg_id = 8 : i32} : !neura.data -// MAPPING-NEXT: %92 = "neura.data_mov"(%87) {dfg_id = 104 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %93 = neura.phi_start %92, %91 {dfg_id = 114 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %92 = "neura.data_mov"(%87) {dfg_id = 104 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %93 = neura.phi_start %92, %91 {dfg_id = 114 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %94 = neura.reserve {dfg_id = 9 : i32} : !neura.data -// MAPPING-NEXT: %95 = "neura.data_mov"(%80) {dfg_id = 78 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %96 = neura.phi_start %95, %94 {dfg_id = 89 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %95 = "neura.data_mov"(%80) {dfg_id = 78 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %96 = neura.phi_start %95, %94 {dfg_id = 89 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %97 = neura.reserve {dfg_id = 10 : i32} : !neura.data -// MAPPING-NEXT: %98 = "neura.data_mov"(%80) {dfg_id = 77 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %99 = neura.phi_start %98, %97 {dfg_id = 88 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 101 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 111 : i32, lhs_value = "%arg4", mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 123 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 3 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 2008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 2008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%102) {dfg_id = 135 : i32, lhs_value = 0.000000e+00 : f64, mapping_locs = [{id = 2 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> () -// MAPPING-NEXT: %103 = "neura.data_mov"(%99) {dfg_id = 100 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 176 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 176 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %104 = "neura.gep"(%103) <{operandSegmentSizes = array}> {dfg_id = 110 : i32, lhs_value = "%arg6", mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %98 = "neura.data_mov"(%80) {dfg_id = 77 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %99 = neura.phi_start %98, %97 {dfg_id = 88 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 101 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 328 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 328 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 111 : i32, lhs_value = "%arg4", mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 123 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 31 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 8024 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 8024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 8024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%102) {dfg_id = 135 : i32, lhs_value = 0.000000e+00 : f64, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> () +// MAPPING-NEXT: %103 = "neura.data_mov"(%99) {dfg_id = 100 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 448 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 448 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %104 = "neura.gep"(%103) <{operandSegmentSizes = array}> {dfg_id = 110 : i32, lhs_value = "%arg6", mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %105 = neura.reserve {dfg_id = 11 : i32} : !neura.data -// MAPPING-NEXT: %106 = "neura.data_mov"(%96) {dfg_id = 103 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 192 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %107 = neura.phi_start %106, %105 {dfg_id = 113 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %106 = "neura.data_mov"(%96) {dfg_id = 103 : i32, mapping_locs = [{id = 216 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 216 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 216 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 216 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 216 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 216 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %107 = neura.phi_start %106, %105 {dfg_id = 113 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %108 = neura.reserve {dfg_id = 12 : i32} : !neura.data -// MAPPING-NEXT: %109 = "neura.data_mov"(%90) {dfg_id = 131 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %110 = neura.phi_start %109, %108 {dfg_id = 141 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %109 = "neura.data_mov"(%90) {dfg_id = 131 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %110 = neura.phi_start %109, %108 {dfg_id = 141 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %111 = neura.reserve {dfg_id = 13 : i32} : !neura.data -// MAPPING-NEXT: %112 = "neura.data_mov"(%93) {dfg_id = 130 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %113 = neura.phi_start %112, %111 {dfg_id = 140 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %112 = "neura.data_mov"(%93) {dfg_id = 130 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %113 = neura.phi_start %112, %111 {dfg_id = 140 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %114 = neura.reserve {dfg_id = 14 : i32} : !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%101) {dfg_id = 122 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = neura.phi_start %115, %114 {dfg_id = 134 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%101) {dfg_id = 122 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = neura.phi_start %115, %114 {dfg_id = 134 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %117 = neura.reserve {dfg_id = 15 : i32} : !neura.data -// MAPPING-NEXT: %118 = "neura.data_mov"(%99) {dfg_id = 99 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %119 = neura.phi_start %118, %117 {dfg_id = 109 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %118 = "neura.data_mov"(%99) {dfg_id = 99 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %119 = neura.phi_start %118, %117 {dfg_id = 109 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %120 = neura.reserve {dfg_id = 16 : i32} : !neura.data -// MAPPING-NEXT: %121 = "neura.data_mov"(%104) {dfg_id = 121 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %122 = neura.phi_start %121, %120 {dfg_id = 133 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %121 = "neura.data_mov"(%104) {dfg_id = 121 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %122 = neura.phi_start %121, %120 {dfg_id = 133 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %123 = neura.reserve {dfg_id = 17 : i32} : !neura.data -// MAPPING-NEXT: %124 = "neura.data_mov"(%96) {dfg_id = 102 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %125 = neura.phi_start %124, %123 {dfg_id = 112 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 127 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %127 = "neura.gep"(%126) <{operandSegmentSizes = array}> {dfg_id = 139 : i32, lhs_value = "%arg3", mapping_locs = [{id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %128 = "neura.data_mov"(%127) {dfg_id = 155 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 1000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %129 = "neura.load"(%128) {dfg_id = 168 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %130 = "neura.data_mov"(%122) {dfg_id = 145 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 2000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 163 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %132 = "neura.data_mov"(%119) {dfg_id = 120 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %133 = "neura.data_mov"(%125) {dfg_id = 126 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %134 = "neura.gep"(%132, %133) <{operandSegmentSizes = array}> {dfg_id = 138 : i32, lhs_value = "%arg2", mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %135 = "neura.data_mov"(%134) {dfg_id = 153 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %136 = "neura.load"(%135) {dfg_id = 167 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %137 = "neura.data_mov"(%131) {dfg_id = 170 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %138 = "neura.data_mov"(%136) {dfg_id = 174 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %139 = "neura.data_mov"(%129) {dfg_id = 175 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 1000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %140 = "neura.fmul_fadd"(%137, %138, %139) {dfg_id = 182 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %141 = "neura.data_mov"(%140) {dfg_id = 189 : i32, mapping_locs = [{id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %142 = "neura.data_mov"(%127) {dfg_id = 154 : i32, mapping_locs = [{id = 1016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 1016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 1016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 1016 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 1016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%141, %142) {dfg_id = 203 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %143 = "neura.data_mov"(%116) {dfg_id = 148 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 164 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %145 = "neura.data_mov"(%134) {dfg_id = 152 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %146 = "neura.load"(%145) {dfg_id = 166 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %147 = "neura.data_mov"(%125) {dfg_id = 125 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 18 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 224 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 137 : i32, lhs_value = "%arg5", mapping_locs = [{id = 7 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 151 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 165 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %151 = "neura.data_mov"(%146) {dfg_id = 173 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 0 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %152 = "neura.data_mov"(%150) {dfg_id = 172 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 2 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %153 = "neura.data_mov"(%144) {dfg_id = 171 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %154 = "neura.fmul_fadd"(%151, %152, %153) {dfg_id = 181 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %155 = "neura.data_mov"(%154) {dfg_id = 188 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %156 = "neura.data_mov"(%116) {dfg_id = 147 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 11 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%155, %156) {dfg_id = 202 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %157 = "neura.data_mov"(%125) {dfg_id = 124 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %158 = "neura.add"(%157) {dfg_id = 136 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %159 = "neura.data_mov"(%158) {dfg_id = 150 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %160 = "neura.data_mov"(%113) {dfg_id = 158 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %161 = "neura.icmp"(%159, %160) <{cmpType = "eq"}> {dfg_id = 169 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %162 = "neura.data_mov"(%161) {dfg_id = 180 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %163 = "neura.not"(%162) {dfg_id = 187 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %164 = "neura.data_mov"(%158) {dfg_id = 149 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %165 = "neura.data_mov"(%163) {dfg_id = 201 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %166 = neura.grant_predicate %164, %165 {dfg_id = 211 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %166 -> %123 {dfg_id = 220 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %167 = "neura.data_mov"(%122) {dfg_id = 144 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 336 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 336 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %168 = "neura.data_mov"(%163) {dfg_id = 200 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %169 = neura.grant_predicate %167, %168 {dfg_id = 210 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %169 -> %120 {dfg_id = 219 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 208 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 208 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 208 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 208 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 208 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 208 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 208 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 208 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 208 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}, {id = 208 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %170 = "neura.data_mov"(%119) {dfg_id = 119 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 10 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 184 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 184 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 184 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %171 = "neura.data_mov"(%163) {dfg_id = 199 : i32, mapping_locs = [{id = 312 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 30 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 42 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 29 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %172 = neura.grant_predicate %170, %171 {dfg_id = 209 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %172 -> %117 {dfg_id = 218 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 4016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 4016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 4016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 4016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 4016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 4016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %173 = "neura.data_mov"(%116) {dfg_id = 146 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 8024 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 8024 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %174 = "neura.data_mov"(%163) {dfg_id = 198 : i32, mapping_locs = [{id = 304 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 27 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %175 = neura.grant_predicate %173, %174 {dfg_id = 208 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %175 -> %114 {dfg_id = 217 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 4024 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}, {id = 4024 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 4024 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 4024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 4024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}, {id = 4024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 4024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 4024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 4024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 4024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}, {id = 4024 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 26 : i32}, {id = 4024 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %176 = "neura.data_mov"(%113) {dfg_id = 157 : i32, mapping_locs = [{id = 8016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 8016 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 8016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 8016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %177 = "neura.data_mov"(%163) {dfg_id = 197 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %178 = neura.grant_predicate %176, %177 {dfg_id = 207 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %178 -> %111 {dfg_id = 216 : i32, mapping_locs = [{id = 8016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 8016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 8016 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 8016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 8016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 8016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 8016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 8016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 8016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 8016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 8016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 8016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %179 = "neura.data_mov"(%110) {dfg_id = 160 : i32, mapping_locs = [{id = 12016 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 12016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 12016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 12016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 12016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %180 = "neura.data_mov"(%163) {dfg_id = 196 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 40 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 12000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %181 = neura.grant_predicate %179, %180 {dfg_id = 206 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %181 -> %108 {dfg_id = 215 : i32, mapping_locs = [{id = 12024 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 12024 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}, {id = 12024 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 12024 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 12024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 12024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}, {id = 12024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 12024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 12024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 12024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 12024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %182 = "neura.data_mov"(%107) {dfg_id = 129 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %183 = "neura.data_mov"(%163) {dfg_id = 195 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 33 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 192 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %184 = neura.grant_predicate %182, %183 {dfg_id = 205 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %184 -> %105 {dfg_id = 214 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 200 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %185 = "neura.data_mov"(%119) {dfg_id = 118 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %186 = "neura.data_mov"(%161) {dfg_id = 179 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %187 = neura.grant_predicate %185, %186 {dfg_id = 186 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %188 = "neura.data_mov"(%110) {dfg_id = 159 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 416 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %189 = "neura.data_mov"(%161) {dfg_id = 178 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %190 = neura.grant_predicate %188, %189 {dfg_id = 185 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %191 = "neura.data_mov"(%107) {dfg_id = 128 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %192 = "neura.data_mov"(%161) {dfg_id = 177 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 328 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %193 = neura.grant_predicate %191, %192 {dfg_id = 184 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %194 = "neura.data_mov"(%113) {dfg_id = 156 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 8000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %195 = "neura.data_mov"(%161) {dfg_id = 176 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %196 = neura.grant_predicate %194, %195 {dfg_id = 183 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %197 = "neura.data_mov"(%187) {dfg_id = 194 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %198 = "neura.add"(%197) {dfg_id = 204 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %199 = "neura.data_mov"(%198) {dfg_id = 213 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %200 = "neura.data_mov"(%190) {dfg_id = 193 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %201 = "neura.icmp"(%199, %200) <{cmpType = "eq"}> {dfg_id = 221 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %202 = "neura.data_mov"(%201) {dfg_id = 224 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %203 = "neura.not"(%202) {dfg_id = 226 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %204 = "neura.data_mov"(%198) {dfg_id = 212 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 160 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %205 = "neura.data_mov"(%203) {dfg_id = 231 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %206 = neura.grant_predicate %204, %205 {dfg_id = 236 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %206 -> %97 {dfg_id = 241 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %207 = "neura.data_mov"(%193) {dfg_id = 191 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %208 = "neura.data_mov"(%203) {dfg_id = 230 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 28 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = neura.grant_predicate %207, %208 {dfg_id = 235 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %209 -> %94 {dfg_id = 240 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 17 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 176 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %210 = "neura.data_mov"(%196) {dfg_id = 190 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %211 = "neura.data_mov"(%203) {dfg_id = 229 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %212 = neura.grant_predicate %210, %211 {dfg_id = 234 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %212 -> %91 {dfg_id = 239 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 28 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 28 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 8024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 8024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %213 = "neura.data_mov"(%190) {dfg_id = 192 : i32, mapping_locs = [{id = 416 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 416 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 416 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %214 = "neura.data_mov"(%203) {dfg_id = 228 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %215 = neura.grant_predicate %213, %214 {dfg_id = 233 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %215 -> %88 {dfg_id = 238 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 12016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 12016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 12016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 12016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 12016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 12016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 12016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 12016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %216 = "neura.data_mov"(%201) {dfg_id = 222 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %217 = "neura.data_mov"(%201) {dfg_id = 223 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 27 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %218 = neura.grant_predicate %216, %217 {dfg_id = 225 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %219 = "neura.data_mov"(%83) {dfg_id = 106 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 8008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %220 = "neura.data_mov"(%43) {dfg_id = 117 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8024 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 8024 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %221 = "neura.data_mov"(%218) {dfg_id = 227 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %222 = "neura.phi"(%219, %220, %221) {dfg_id = 232 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %223 = "neura.data_mov"(%222) {dfg_id = 237 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %223 : !neura.data {dfg_id = 242 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} +// MAPPING-NEXT: %124 = "neura.data_mov"(%96) {dfg_id = 102 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %125 = neura.phi_start %124, %123 {dfg_id = 112 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 127 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 18 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 224 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %127 = "neura.gep"(%126) <{operandSegmentSizes = array}> {dfg_id = 139 : i32, lhs_value = "%arg3", mapping_locs = [{id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %128 = "neura.data_mov"(%127) {dfg_id = 155 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %129 = "neura.load"(%128) {dfg_id = 168 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %130 = "neura.data_mov"(%122) {dfg_id = 145 : i32, mapping_locs = [{id = 43 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 40 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 163 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %132 = "neura.data_mov"(%119) {dfg_id = 120 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 352 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 352 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %133 = "neura.data_mov"(%125) {dfg_id = 126 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 23 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 360 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %134 = "neura.gep"(%132, %133) <{operandSegmentSizes = array}> {dfg_id = 138 : i32, lhs_value = "%arg2", mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %135 = "neura.data_mov"(%134) {dfg_id = 153 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 22 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 3008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 3008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %136 = "neura.load"(%135) {dfg_id = 167 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %137 = "neura.data_mov"(%131) {dfg_id = 170 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 41 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 44 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 47 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %138 = "neura.data_mov"(%136) {dfg_id = 174 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 23 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %139 = "neura.data_mov"(%129) {dfg_id = 175 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 23 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 352 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 352 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 352 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %140 = "neura.fmul_fadd"(%137, %138, %139) {dfg_id = 182 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %141 = "neura.data_mov"(%140) {dfg_id = 189 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 22 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %142 = "neura.data_mov"(%127) {dfg_id = 154 : i32, mapping_locs = [{id = 23 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 36 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 22 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 3000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 3000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 3000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%141, %142) {dfg_id = 203 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %143 = "neura.data_mov"(%116) {dfg_id = 148 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 164 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %145 = "neura.data_mov"(%134) {dfg_id = 152 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 31 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 27 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %146 = "neura.load"(%145) {dfg_id = 166 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %147 = "neura.data_mov"(%125) {dfg_id = 125 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 137 : i32, lhs_value = "%arg5", mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 151 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 165 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %151 = "neura.data_mov"(%146) {dfg_id = 173 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %152 = "neura.data_mov"(%150) {dfg_id = 172 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %153 = "neura.data_mov"(%144) {dfg_id = 171 : i32, mapping_locs = [{id = 8016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 8016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %154 = "neura.fmul_fadd"(%151, %152, %153) {dfg_id = 181 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %155 = "neura.data_mov"(%154) {dfg_id = 188 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %156 = "neura.data_mov"(%116) {dfg_id = 147 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 416 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 40 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 12000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%155, %156) {dfg_id = 202 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %157 = "neura.data_mov"(%125) {dfg_id = 124 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %158 = "neura.add"(%157) {dfg_id = 136 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %159 = "neura.data_mov"(%158) {dfg_id = 150 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %160 = "neura.data_mov"(%113) {dfg_id = 158 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 200 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %161 = "neura.icmp"(%159, %160) <{cmpType = "eq"}> {dfg_id = 169 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %162 = "neura.data_mov"(%161) {dfg_id = 180 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %163 = "neura.not"(%162) {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %164 = "neura.data_mov"(%158) {dfg_id = 149 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 208 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 208 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %165 = "neura.data_mov"(%163) {dfg_id = 201 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %166 = neura.grant_predicate %164, %165 {dfg_id = 211 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %166 -> %123 {dfg_id = 220 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %167 = "neura.data_mov"(%122) {dfg_id = 144 : i32, mapping_locs = [{id = 464 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 464 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 464 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 464 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 464 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %168 = "neura.data_mov"(%163) {dfg_id = 200 : i32, mapping_locs = [{id = 217 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 12 : i32}, {id = 208 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 34 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 448 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %169 = neura.grant_predicate %167, %168 {dfg_id = 210 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %169 -> %120 {dfg_id = 219 : i32, mapping_locs = [{id = 464 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 464 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 464 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 464 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 464 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 464 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 464 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %170 = "neura.data_mov"(%119) {dfg_id = 119 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 456 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 456 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 456 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 456 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 456 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %171 = "neura.data_mov"(%163) {dfg_id = 199 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 34 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 448 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %172 = neura.grant_predicate %170, %171 {dfg_id = 209 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %172 -> %117 {dfg_id = 218 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 45 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 344 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 344 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 344 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 344 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %173 = "neura.data_mov"(%116) {dfg_id = 146 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 14 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 201 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 20 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %174 = "neura.data_mov"(%163) {dfg_id = 198 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 18 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 21 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 208 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 20 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 336 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %175 = neura.grant_predicate %173, %174 {dfg_id = 208 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %175 -> %114 {dfg_id = 217 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %176 = "neura.data_mov"(%113) {dfg_id = 157 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %177 = "neura.data_mov"(%163) {dfg_id = 197 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %178 = neura.grant_predicate %176, %177 {dfg_id = 207 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %178 -> %111 {dfg_id = 216 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %179 = "neura.data_mov"(%110) {dfg_id = 160 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %180 = "neura.data_mov"(%163) {dfg_id = 196 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 1008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %181 = neura.grant_predicate %179, %180 {dfg_id = 206 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %181 -> %108 {dfg_id = 215 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 2024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 2024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 2024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 2024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}, {id = 2024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %182 = "neura.data_mov"(%107) {dfg_id = 129 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %183 = "neura.data_mov"(%163) {dfg_id = 195 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 224 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %184 = neura.grant_predicate %182, %183 {dfg_id = 205 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %184 -> %105 {dfg_id = 214 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 24 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %185 = "neura.data_mov"(%119) {dfg_id = 118 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %186 = "neura.data_mov"(%161) {dfg_id = 179 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %187 = neura.grant_predicate %185, %186 {dfg_id = 186 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %188 = "neura.data_mov"(%110) {dfg_id = 159 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 2000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %189 = "neura.data_mov"(%161) {dfg_id = 178 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %190 = neura.grant_predicate %188, %189 {dfg_id = 185 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %191 = "neura.data_mov"(%107) {dfg_id = 128 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %192 = "neura.data_mov"(%161) {dfg_id = 177 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 21 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 17 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %193 = neura.grant_predicate %191, %192 {dfg_id = 184 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %194 = "neura.data_mov"(%113) {dfg_id = 156 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %195 = "neura.data_mov"(%161) {dfg_id = 176 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %196 = neura.grant_predicate %194, %195 {dfg_id = 183 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %197 = "neura.data_mov"(%187) {dfg_id = 194 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %198 = "neura.add"(%197) {dfg_id = 204 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %199 = "neura.data_mov"(%198) {dfg_id = 213 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %200 = "neura.data_mov"(%190) {dfg_id = 193 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 20 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %201 = "neura.icmp"(%199, %200) <{cmpType = "eq"}> {dfg_id = 221 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %202 = "neura.data_mov"(%201) {dfg_id = 224 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %203 = "neura.not"(%202) {dfg_id = 226 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %204 = "neura.data_mov"(%198) {dfg_id = 212 : i32, mapping_locs = [{id = 344 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 344 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 344 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 344 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %205 = "neura.data_mov"(%203) {dfg_id = 231 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %206 = neura.grant_predicate %204, %205 {dfg_id = 236 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %206 -> %97 {dfg_id = 241 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %207 = "neura.data_mov"(%193) {dfg_id = 191 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 208 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 208 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %208 = "neura.data_mov"(%203) {dfg_id = 230 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 35 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 33 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = neura.grant_predicate %207, %208 {dfg_id = 235 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %209 -> %94 {dfg_id = 240 : i32, mapping_locs = [{id = 201 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 201 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %210 = "neura.data_mov"(%196) {dfg_id = 190 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %211 = "neura.data_mov"(%203) {dfg_id = 229 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %212 = neura.grant_predicate %210, %211 {dfg_id = 234 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %212 -> %91 {dfg_id = 239 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 169 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 169 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 169 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %213 = "neura.data_mov"(%190) {dfg_id = 192 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %214 = "neura.data_mov"(%203) {dfg_id = 228 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %215 = neura.grant_predicate %213, %214 {dfg_id = 233 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %215 -> %88 {dfg_id = 238 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 2016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 2016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 2016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 2016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %216 = "neura.data_mov"(%201) {dfg_id = 222 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %217 = "neura.data_mov"(%201) {dfg_id = 223 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %218 = neura.grant_predicate %216, %217 {dfg_id = 225 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %219 = "neura.data_mov"(%83) {dfg_id = 106 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %220 = "neura.data_mov"(%43) {dfg_id = 117 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 201 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 201 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %221 = "neura.data_mov"(%218) {dfg_id = 227 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %222 = "neura.phi"(%219, %220, %221) {dfg_id = 232 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %223 = "neura.data_mov"(%222) {dfg_id = 237 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %223 : !neura.data {dfg_id = 242 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 18 : i32} // MAPPING-NEXT: } // MAPPING-NEXT: } @@ -451,7 +448,7 @@ // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$16" +// YAML-NEXT: - operand: "$2" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" @@ -477,7 +474,7 @@ // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: @@ -508,7 +505,7 @@ // YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" @@ -522,9 +519,9 @@ // YAML-NEXT: time_step: 7 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$16" +// YAML-NEXT: - operand: "$2" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$24" +// YAML-NEXT: - operand: "$3" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" @@ -549,7 +546,7 @@ // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 8 // YAML-NEXT: operations: @@ -572,10 +569,10 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$24" +// YAML-NEXT: - operand: "$3" // YAML-NEXT: color: "RED" // YAML-NEXT: - column: 1 // YAML-NEXT: row: 0 @@ -694,6 +691,18 @@ // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 102 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$4" +// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "PHI_START" @@ -702,18 +711,6 @@ // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" // ASM: # Compiled II: 10 @@ -722,31 +719,31 @@ // ASM-NEXT: GRANT_ONCE, [#0] -> [$0], [NORTH, RED] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$16], [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$2], [NORTH, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { // ASM-NEXT: GEP, [$0] -> [EAST, RED] (t=5, inv_iters=0) // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GEP, [$8] -> [EAST, RED], [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: GEP, [$1] -> [EAST, RED], [NORTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$16], [$24] -> [$0], [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: PHI_START, [$2], [$3] -> [$0], [EAST, RED] (t=7, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$24] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [$3] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(1,0): // ASM-NEXT: { @@ -776,26 +773,28 @@ // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [EAST, RED] -> [$0], [NORTH, RED], [EAST, RED], [$8] (t=1, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$4] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [EAST, RED] -> [$0], [NORTH, RED], [EAST, RED], [$1] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$16] -> [$16], [$24], [SOUTH, RED], [$0] (t=2, inv_iters=0) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$2] -> [$2], [$3], [SOUTH, RED], [$0] (t=2, inv_iters=0) // ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED], [$0] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$24] -> [SOUTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$24] (t=13, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$3] -> [SOUTH, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$8], [$24] -> [SOUTH, RED], [$0] (t=4, inv_iters=0) +// ASM-NEXT: PHI_START, [$1], [$4] -> [SOUTH, RED], [$0] (t=4, inv_iters=0) // ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [EAST, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GEP, [NORTH, RED], [$16] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: GEP, [NORTH, RED], [$2] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=6, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) @@ -805,19 +804,18 @@ // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: MUL, [SOUTH, RED], [$0] -> [NORTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=8, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$2] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { // ASM-NEXT: ADD, [SOUTH, RED], [NORTH, RED] -> [EAST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$24], [$0] -> [WEST, RED] (t=10, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$3], [$0] -> [WEST, RED] (t=10, inv_iters=1) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: SHL, [WEST, RED], [#5] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [WEST, RED] (t=12, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: GEP, [$0] -> [NORTH, RED] (t=3, inv_iters=0) @@ -826,40 +824,40 @@ // ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [WEST, RED], [SOUTH, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$8], [EAST, RED], [$24], [NORTH, RED], [$16], [WEST, RED] (t=5, inv_iters=0) +// ASM-NEXT: NOT, [$0] -> [$1], [EAST, RED], [$3], [NORTH, RED], [$2], [WEST, RED] (t=5, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: ADD, [WEST, RED], [#1] -> [EAST, RED], [$24] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$24] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: ADD, [WEST, RED], [#1] -> [EAST, RED], [$3] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$3] -> [NORTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=7, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$2] -> [WEST, RED] (t=9, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(2,1): // ASM-NEXT: { // ASM-NEXT: RETURN_VOID, [$0] (t=10, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [WEST, RED] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [$8], [$16] (t=7, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [$1], [$2] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: NOT, [$0] -> [WEST, RED], [SOUTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$2] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(3,1): // ASM-NEXT: { @@ -867,24 +865,24 @@ // ASM-NEXT: } (idx_per_ii=8) // ASM: PE(0,2): // ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$8] (t=10, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=10, inv_iters=1) +// ASM-NEXT: STORE, [$0], [$1] (t=10, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$2] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: GEP, [$0] -> [EAST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: GEP, [$8] -> [NORTH, RED], [$0] (t=5, inv_iters=0) +// ASM-NEXT: GEP, [$1] -> [NORTH, RED], [$0] (t=5, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$16] -> [NORTH, RED], [$8], [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$2] -> [NORTH, RED], [$1], [EAST, RED] (t=6, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { @@ -899,34 +897,29 @@ // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(1,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$16], [$24] -> [$0] (t=10, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=10, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [$0] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$8] -> [WEST, RED], [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$4], [$5] -> [$1] (t=11, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [WEST, RED], [$4] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [WEST, RED], [$16] (t=5, inv_iters=0) +// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [WEST, RED], [$2] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$24] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$3] (t=7, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(2,2): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$5] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(3,2): // ASM-NEXT: { @@ -973,7 +966,7 @@ // DOT-NEXT: compound = true; // DOT-NEXT: subgraph cluster_1 { // DOT-NEXT: v2 [label = " ", shape = plain]; -// DOT-NEXT: label = "builtin.module : ()\n\ndlti.dl_spec: #dlti.dl_spec) -> !neura.data // MAPPING-NEXT: %275 = "neura.data_mov"(%258) {dfg_id = 280 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %276 = neura.grant_predicate %274, %275 {dfg_id = 295 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %276 -> %49 {dfg_id = 305 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 4004 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 18 : i32}, {id = 4004 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 19 : i32}, {id = 4004 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 20 : i32}, {id = 4004 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 21 : i32}, {id = 4004 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 22 : i32}, {id = 4004 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 23 : i32}, {id = 4004 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 24 : i32}, {id = 4004 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 25 : i32}, {id = 4004 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 26 : i32}, {id = 4004 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %277 = "neura.data_mov"(%236) {dfg_id = 202 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 162 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 162 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 162 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %278 = "neura.data_mov"(%258) {dfg_id = 279 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 160 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %279 = neura.grant_predicate %277, %278 {dfg_id = 294 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %279 -> %46 {dfg_id = 304 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 163 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 163 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 163 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 163 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 163 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 163 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 163 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 163 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 163 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}, {id = 163 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 28 : i32}, {id = 163 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 29 : i32}, {id = 163 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 30 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %280 = "neura.data_mov"(%248) {dfg_id = 197 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %281 = "neura.data_mov"(%256) {dfg_id = 262 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %282 = neura.grant_predicate %280, %281 {dfg_id = 272 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %283 = "neura.data_mov"(%37) {dfg_id = 99 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 288 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 28 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %284 = "neura.data_mov"(%282) {dfg_id = 278 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %285 = "neura.phi"(%283, %284) {dfg_id = 293 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %286 = "neura.data_mov"(%12) {dfg_id = 45 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %287 = "neura.shl"(%286) {dfg_id = 53 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %288 = "neura.data_mov"(%15) {dfg_id = 42 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %289 = "neura.div"(%288) {dfg_id = 51 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 2 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %290 = "neura.data_mov"(%18) {dfg_id = 40 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %291 = "neura.shl"(%290) {dfg_id = 50 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 3 : i32, y = 1 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %292 = "neura.data_mov"(%291) {dfg_id = 56 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %293 = "neura.or"(%292) {dfg_id = 65 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 1 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %294 = "neura.data_mov"(%9) {dfg_id = 39 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %295 = "neura.add"(%294) {dfg_id = 49 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %296 = "neura.data_mov"(%295) {dfg_id = 55 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %297 = "neura.icmp"(%296) <{cmpType = "eq"}> {dfg_id = 64 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 8 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %298 = "neura.data_mov"(%297) {dfg_id = 73 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 160 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %299 = "neura.not"(%298) {dfg_id = 84 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %300 = "neura.data_mov"(%293) {dfg_id = 74 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 197 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 9 : i32}, {id = 197 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 10 : i32}, {id = 197 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 11 : i32}, {id = 197 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 12 : i32}, {id = 197 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 13 : i32}, {id = 197 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 14 : i32}, {id = 197 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 15 : i32}, {id = 197 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 16 : i32}, {id = 197 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 17 : i32}, {id = 197 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 18 : i32}, {id = 197 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %301 = "neura.data_mov"(%299) {dfg_id = 98 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 10 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %302 = neura.grant_predicate %300, %301 {dfg_id = 115 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %302 -> %16 {dfg_id = 128 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 224 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}, {id = 224 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %303 = "neura.data_mov"(%289) {dfg_id = 57 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 15 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 1001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 1001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 1001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 1001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 1001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %304 = "neura.data_mov"(%299) {dfg_id = 97 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %305 = neura.grant_predicate %303, %304 {dfg_id = 114 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %305 -> %13 {dfg_id = 127 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %306 = "neura.data_mov"(%287) {dfg_id = 63 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 196 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 10 : i32}, {id = 196 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 196 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 196 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 196 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 196 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}, {id = 196 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}, {id = 196 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}, {id = 196 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %307 = "neura.data_mov"(%299) {dfg_id = 96 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 14 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %308 = neura.grant_predicate %306, %307 {dfg_id = 113 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %308 -> %10 {dfg_id = 126 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 322 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 322 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 322 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 322 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 322 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}, {id = 322 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 25 : i32}, {id = 322 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %309 = "neura.data_mov"(%295) {dfg_id = 54 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 195 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 195 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 195 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %310 = "neura.data_mov"(%299) {dfg_id = 95 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %311 = neura.grant_predicate %309, %310 {dfg_id = 112 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %311 -> %7 {dfg_id = 125 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 195 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 195 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 195 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 195 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 195 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 195 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 195 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 195 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 195 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}, {id = 195 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 28 : i32}, {id = 195 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 29 : i32}, {id = 195 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 30 : i32}, {id = 195 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %312 = "neura.data_mov"(%285) {dfg_id = 303 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 353 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %313 = "neura.data_mov"(%299) {dfg_id = 94 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 28 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 32 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %314 = neura.grant_predicate %312, %313 {dfg_id = 315 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %314 -> %4 {dfg_id = 318 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %315 = "neura.data_mov"(%297) {dfg_id = 71 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 1000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %316 = "neura.data_mov"(%297) {dfg_id = 72 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 15 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %317 = neura.grant_predicate %315, %316 {dfg_id = 83 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %318 = "neura.data_mov"(%317) {dfg_id = 93 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %318 : !neura.data {dfg_id = 111 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} -// MAPPING-NEXT: neura.yield {dfg_id = 28 : i32} -// MAPPING-NEXT: } // YAML: array_config: diff --git a/test/e2e/fir/fir_kernel.mlir b/test/e2e/fir/fir_kernel.mlir index dbf5cbda..7ce80757 100644 --- a/test/e2e/fir/fir_kernel.mlir +++ b/test/e2e/fir/fir_kernel.mlir @@ -25,8 +25,7 @@ // RUN: FileCheck %s --input-file=%t-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=%t-generated-instructions.asm --check-prefix=ASM -// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f64 = dense<64> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { -// MAPPING-NEXT: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data @@ -55,7 +54,7 @@ // MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 27 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 30 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 34 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data @@ -368,7 +367,7 @@ // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" @@ -439,13 +438,13 @@ // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [SOUTH, RED], [EAST, RED], [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$1] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED] (t=3, inv_iters=0) @@ -484,7 +483,7 @@ // DOT-NEXT: compound = true; // DOT-NEXT: subgraph cluster_1 { // DOT-NEXT: v2 [label = " ", shape = plain]; -// DOT-NEXT: label = "builtin.module : ()\n\ndlti.dl_spec: #dlti.dl_spec : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i16 = dense<16> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, "dlti.endianness" = "little", "dlti.stack_alignment" = 128 : i64>, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { -// MAPPING-NEXT: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = dense<0> : vector<4xi32>}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data, i1> // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data, i1> @@ -53,7 +52,7 @@ // MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 27 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 30 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 34 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data @@ -369,7 +368,7 @@ // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" @@ -437,13 +436,13 @@ // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [SOUTH, RED], [EAST, RED], [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#4] -> [$0], [$1] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#4] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED] (t=3, inv_iters=0) diff --git a/test/e2e/histogram/histogram_kernel.mlir b/test/e2e/histogram/histogram_kernel.mlir index 31df6770..1cd223f5 100644 --- a/test/e2e/histogram/histogram_kernel.mlir +++ b/test/e2e/histogram/histogram_kernel.mlir @@ -25,8 +25,7 @@ -// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f64 = dense<64> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { -// MAPPING-NEXT: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = neura.reserve {dfg_id = 1 : i32} : !neura.data // MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data @@ -50,7 +49,7 @@ // MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 37 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %21 = "neura.add"(%20) {dfg_id = 38 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 0 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data // MAPPING-NEXT: %22 = "neura.data_mov"(%21) {dfg_id = 39 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = "neura.data_mov"(%17) {dfg_id = 34 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.data_mov"(%17) {dfg_id = 34 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 2001 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: "neura.store"(%22, %23) {dfg_id = 40 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %24 = "neura.data_mov"(%3) {dfg_id = 5 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %25 = "neura.add"(%24) {dfg_id = 7 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data @@ -58,14 +57,14 @@ // MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "eq"}> {dfg_id = 12 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 20 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %28 = "neura.data_mov"(%27) {dfg_id = 16 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %29 = "neura.not"(%28) {dfg_id = 19 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = "neura.data_mov"(%25) {dfg_id = 9 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = "neura.data_mov"(%25) {dfg_id = 9 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %31 = "neura.data_mov"(%29) {dfg_id = 22 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %32 = neura.grant_predicate %30, %31 {dfg_id = 25 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %32 -> %1 {dfg_id = 27 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %33 = "neura.data_mov"(%27) {dfg_id = 14 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 15 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 15 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %35 = neura.grant_predicate %33, %34 {dfg_id = 18 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 21 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 21 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: neura.return_void %36 : !neura.data {dfg_id = 24 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 2 : i32} // MAPPING-NEXT: } @@ -116,7 +115,7 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: @@ -142,7 +141,7 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - column: 3 // YAML-NEXT: row: 0 @@ -220,7 +219,7 @@ // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "GRANT_PREDICATE" // YAML-NEXT: id: 18 @@ -229,10 +228,10 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$16" +// YAML-NEXT: - operand: "$2" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: @@ -241,7 +240,7 @@ // YAML-NEXT: time_step: 11 // YAML-NEXT: invalid_iterations: 2 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$16" +// YAML-NEXT: - operand: "$2" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: @@ -286,7 +285,7 @@ // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" @@ -323,7 +322,7 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: @@ -341,7 +340,7 @@ // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$16" +// YAML-NEXT: - operand: "$2" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: @@ -360,7 +359,7 @@ // YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$16" +// YAML-NEXT: - operand: "$2" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "SOUTH" @@ -380,13 +379,13 @@ // ASM-NEXT: ADD, [$0], [#1] -> [$0] (t=11, inv_iters=2) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$8] (t=12, inv_iters=2) +// ASM-NEXT: STORE, [$0], [$1] (t=12, inv_iters=2) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: SEXT, [EAST, RED] -> [$0] (t=8, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [$0], [$8] (t=9, inv_iters=1) +// ASM-NEXT: GEP, [$0] -> [$0], [$1] (t=9, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(3,0): // ASM-NEXT: { @@ -403,11 +402,11 @@ // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=5, inv_iters=1) -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$16] (t=10, inv_iters=2) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [$2] (t=10, inv_iters=2) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [$16] (t=11, inv_iters=2) +// ASM-NEXT: RETURN_VOID, [$2] (t=11, inv_iters=2) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=4, inv_iters=0) @@ -418,20 +417,20 @@ // ASM-NEXT: } (idx_per_ii=3) // ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [EAST, RED], [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$1] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#20] -> [$0], [SOUTH, RED], [$16] (t=3, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#20] -> [$0], [SOUTH, RED], [$2] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: NOT, [$0] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$16] -> [SOUTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$2] -> [SOUTH, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(3,2): // ASM-NEXT: { @@ -463,7 +462,7 @@ // DOT-NEXT: compound = true; // DOT-NEXT: subgraph cluster_1 { // DOT-NEXT: v2 [label = " ", shape = plain]; -// DOT-NEXT: label = "builtin.module : ()\n\ndlti.dl_spec: #dlti.dl_spec Date: Tue, 24 Mar 2026 08:17:33 +0800 Subject: [PATCH 09/26] Implement read/write separation for register occupancy tracking --- include/NeuraDialect/Mapping/MappingState.h | 77 +++++ lib/NeuraDialect/Mapping/MappingState.cpp | 352 ++++++++++++++++---- 2 files changed, 373 insertions(+), 56 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index 99dc737f..7af9deba 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -5,6 +5,7 @@ #include "mlir/IR/Operation.h" #include "llvm/Support/raw_ostream.h" #include +#include #include namespace mlir { @@ -152,6 +153,17 @@ class MappingState { const std::map> &getOpToLocs() const { return this->op_to_locs; } + const std::unordered_map> & + getRegFileWriteToOccupyOperations() const { + return this->reg_file_write_to_occupy_operations; + } + + const std::unordered_map> & + getRegFileReadToOccupyOperations() const { + return this->reg_file_read_to_occupy_operations; + } // Setters for state information. void setOccupiedLocs( @@ -166,6 +178,19 @@ class MappingState { const std::map> &op_to_locs) { this->op_to_locs = op_to_locs; } + void setRegFileWriteToOccupyOperations( + const std::unordered_map> + &records) { + this->reg_file_write_to_occupy_operations = records; + } + + void setRegFileReadToOccupyOperations( + const std::unordered_map> + &records) { + this->reg_file_read_to_occupy_operations = records; + } private: // Initiation interval. @@ -178,6 +203,52 @@ class MappingState { std::map>> occupied_locs; std::map loc_to_op; std::map> op_to_locs; + + // Record table for register cluster write occupancy, keyed by (RegisterFile*, + // time_step % II). Maps to the Operation* that is writing to the cluster at + // that canonical time slot. At most one writer is allowed per cluster per + // slot, enforcing the hardware constraint that a register cluster supports + // only a single write port per cycle. + std::unordered_map> + reg_file_write_to_occupy_operations; + + // Record table for register cluster read occupancy, keyed by (RegisterFile*, + // time_step % II). Maps to the Operation* that is reading from the cluster at + // that canonical time slot. At most one reader is allowed per cluster per + // slot, enforcing the hardware constraint that a register cluster supports + // only a single read port per cycle. + std::unordered_map> + reg_file_read_to_occupy_operations; + + // Records the write operation for a register cluster slot. + // Returns false if the cluster slot is already occupied by a writer. + bool addWriteToRegFileRecord(Register *reg, int time_step); + + // Records the read operation for a register cluster slot. + // Returns false if the cluster slot is already occupied by a reader. + bool addReadToRegFileRecord(Register *reg, int time_step); + + // Removes the write operation from a register cluster slot + // when the op is unbound/released. + void removeWriteFromRegFileRecord(Register *reg, int time_step); + + // Removes the read operation from a register cluster slot + // when the op is unbound/released. + void removeReadFromRegFileRecord(Register *reg, int time_step); + + // Checks availability of a register resource for writing across the relevant + // time steps, delegating the spatial-only vs modulo-II loop to a single helper. + // Returns false if any congruent time slot is occupied or violates the + // cluster constraint. + bool isRegisterWriteAvailableAcrossTime(Register *reg, int time_step) const; + + // Checks availability of a register resource for reading across the relevant + // time steps, delegating the spatial-only vs modulo-II loop to a single helper. + // Returns false if any congruent time slot is occupied or violates the + // cluster constraint. + bool isRegisterReadAvailableAcrossTime(Register *reg, int time_step) const; }; } // namespace neura @@ -199,6 +270,12 @@ class MappingStateSnapshot { std::map>> occupied_locs; std::map loc_to_op; std::map> op_to_locs; + std::unordered_map> + reg_file_write_to_occupy_operations; + std::unordered_map> + reg_file_read_to_occupy_operations; }; } // namespace neura } // namespace mlir diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index d537eeea..d626e10c 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -30,6 +30,172 @@ MappingState::MappingState(const Architecture &arch, int II, bool is_spatial_only) : II(II), is_spatial_only(is_spatial_only) {} +// --------------------------------------------------------------------------- +// Static / private helpers +// --------------------------------------------------------------------------- + +bool MappingState::addWriteToRegFileRecord(Register *reg, int time_step) { + RegisterFile *reg_file = reg->getRegisterFile(); + if (!reg_file) { + return true; + } + int canonical_step = time_step % II; + auto &slot_map = reg_file_write_to_occupy_operations[reg_file]; + auto it = slot_map.find(canonical_step); + // Enforces the one-write-per-cluster-per-slot constraint: reject any second + // writer, regardless of whether it targets the same register or a different + // one. This disallows both: + // * ADD NORTH, SOUTH -> $0, $1 (single op writing two regs in a cluster) + // * ADD -> $0 + MOV -> $1 (two ops writing different regs in a cluster) + if (it != slot_map.end()) { + return false; + } + slot_map[canonical_step] = nullptr; // Placeholder; caller identity not needed + return true; +} + +bool MappingState::addReadToRegFileRecord(Register *reg, int time_step) { + RegisterFile *reg_file = reg->getRegisterFile(); + if (!reg_file) { + return true; + } + int canonical_step = time_step % II; + auto &slot_map = reg_file_read_to_occupy_operations[reg_file]; + auto it = slot_map.find(canonical_step); + // Enforces the one-read-per-cluster-per-slot constraint: reject any second + // reader, regardless of whether it targets the same register or a different + // one. + if (it != slot_map.end()) { + return false; + } + slot_map[canonical_step] = nullptr; // Placeholder; caller identity not needed + return true; +} + +void MappingState::removeWriteFromRegFileRecord(Register *reg, int time_step) { + RegisterFile *reg_file = reg->getRegisterFile(); + if (!reg_file) { + return; + } + int canonical_step = time_step % II; + auto reg_file_it = reg_file_write_to_occupy_operations.find(reg_file); + if (reg_file_it == reg_file_write_to_occupy_operations.end()) { + return; + } + auto slot_it = reg_file_it->second.find(canonical_step); + if (slot_it == reg_file_it->second.end()) { + return; + } + // Removes the entry to free the cluster slot. + reg_file_it->second.erase(slot_it); + // Cleans up empty entries to keep the map compact. + if (reg_file_it->second.empty()) { + reg_file_write_to_occupy_operations.erase(reg_file_it); + } +} + +void MappingState::removeReadFromRegFileRecord(Register *reg, int time_step) { + RegisterFile *reg_file = reg->getRegisterFile(); + if (!reg_file) { + return; + } + int canonical_step = time_step % II; + auto reg_file_it = reg_file_read_to_occupy_operations.find(reg_file); + if (reg_file_it == reg_file_read_to_occupy_operations.end()) { + return; + } + auto slot_it = reg_file_it->second.find(canonical_step); + if (slot_it == reg_file_it->second.end()) { + return; + } + // Removes the entry to free the cluster slot. + reg_file_it->second.erase(slot_it); + // Cleans up empty entries to keep the map compact. + if (reg_file_it->second.empty()) { + reg_file_read_to_occupy_operations.erase(reg_file_it); + } +} + +bool MappingState::isRegisterWriteAvailableAcrossTime(Register *reg, + int time_step) const { + RegisterFile *reg_file = reg->getRegisterFile(); + if (!reg_file) { + return true; + } + + // Checks whether the cluster already has a writer at any congruent time slot. + auto checkSlot = [this, reg_file](int t) -> bool { + int canonical_step = t % II; + auto reg_file_it = reg_file_write_to_occupy_operations.find(reg_file); + if (reg_file_it == reg_file_write_to_occupy_operations.end()) { + return true; + } + auto slot_it = reg_file_it->second.find(canonical_step); + if (slot_it == reg_file_it->second.end()) { + return true; + } + // Conflict: an existing writer in the cluster blocks a new write. + return false; + }; + + if (this->is_spatial_only) { + for (int t = 0; t < II * kMaxSteps; ++t) { + if (!checkSlot(t)) { + return false; + } + } + } else { + for (int t = time_step % II; t < II * kMaxSteps; t += II) { + if (!checkSlot(t)) { + return false; + } + } + } + return true; +} + +bool MappingState::isRegisterReadAvailableAcrossTime(Register *reg, + int time_step) const { + RegisterFile *reg_file = reg->getRegisterFile(); + if (!reg_file) { + return true; + } + + // Checks whether the cluster already has a reader at any congruent time slot. + auto checkSlot = [this, reg_file](int t) -> bool { + int canonical_step = t % II; + auto reg_file_it = reg_file_read_to_occupy_operations.find(reg_file); + if (reg_file_it == reg_file_read_to_occupy_operations.end()) { + return true; + } + auto slot_it = reg_file_it->second.find(canonical_step); + if (slot_it == reg_file_it->second.end()) { + return true; + } + // Conflict: an existing reader in the cluster blocks a new read. + return false; + }; + + if (this->is_spatial_only) { + for (int t = 0; t < II * kMaxSteps; ++t) { + if (!checkSlot(t)) { + return false; + } + } + } else { + for (int t = time_step % II; t < II * kMaxSteps; t += II) { + if (!checkSlot(t)) { + return false; + } + } + } + return true; +} + +// --------------------------------------------------------------------------- +// MappingState public API — bind / unbind +// --------------------------------------------------------------------------- + bool MappingState::bindOp(const MappingLoc &loc, Operation *op) { // Default to SINGLE_OCCUPY for backward compatibility return bindOp(loc, op, SINGLE_OCCUPY); @@ -37,16 +203,22 @@ bool MappingState::bindOp(const MappingLoc &loc, Operation *op) { bool MappingState::bindOp(const MappingLoc &loc, Operation *op, int occupy_status) { - // Check if the location is available for the specified occupy status + // Checks if the location is available for the specified occupy status if (!isAvailableForOccupyStatus(loc, occupy_status)) { return false; } loc_to_op[loc] = op; occupied_locs[loc].push_back({occupy_status, op}); - auto it = op_to_locs.find(op); + std::map>::iterator it = + op_to_locs.find(op); assert(it == op_to_locs.end() && "Operation already has reserved locations"); op_to_locs[op].push_back(loc); + // Maintains register cluster write occupancy record. + if (loc.resource->getKind() == ResourceKind::Register) { + Register *reg = static_cast(loc.resource); + addWriteToRegFileRecord(reg, loc.time_step); + } return true; } @@ -88,82 +260,106 @@ bool MappingState::bindMultiCycleOp(BasicResource *resource, int start_time, } void MappingState::unbindOp(Operation *op) { - auto it = op_to_locs.find(op); + std::map>::iterator it = + op_to_locs.find(op); if (it == op_to_locs.end()) { return; } for (const MappingLoc &loc : it->second) { loc_to_op.erase(loc); - // Remove entries for this op from occupied_locs - auto occ_it = occupied_locs.find(loc); + // Removes entries for this op from occupied_locs + std::map>>::iterator + occ_it = occupied_locs.find(loc); if (occ_it != occupied_locs.end()) { - auto &entries = occ_it->second; + std::vector> &entries = occ_it->second; entries.erase( std::remove_if(entries.begin(), entries.end(), [op](const std::pair &entry) { return entry.second == op; }), entries.end()); - // Remove the location entirely if no more entries + // Removes the location entirely if no more entries. if (entries.empty()) { occupied_locs.erase(occ_it); } } + // Maintains register cluster read/write occupancy records. + if (loc.resource->getKind() == ResourceKind::Register) { + Register *reg = static_cast(loc.resource); + removeWriteFromRegFileRecord(reg, loc.time_step); + removeReadFromRegFileRecord(reg, loc.time_step); + } } op_to_locs.erase(it); } bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { - // For spatial mapping, checks if the location is available across all time. + // Checks whether the resource at the given (resource, time_step) is free, + // considering both occupancy state and the register-cluster constraint. + + // Returns true if the (resource, t) slot is free (or only IN_PIPE_OCCUPY). + auto isSlotFree = [this](BasicResource *resource, int t) -> bool { + std::map>>::const_iterator it = + occupied_locs.find({resource, t}); + if (it == occupied_locs.end()) { + return true; + } + for (const std::pair &entry : it->second) { + if (entry.first != IN_PIPE_OCCUPY) { + return false; + } + } + return true; + }; + if (this->is_spatial_only) { + // Spatial-only: resource must be free at every time step. for (int t = 0; t < II * kMaxSteps; ++t) { - MappingLoc check_loc = {loc.resource, t}; - auto it = occupied_locs.find(check_loc); - if (it != occupied_locs.end()) { - // Check if all existing occupy statuses allow new single-cycle op - for (const auto &entry : it->second) { - if (entry.first != IN_PIPE_OCCUPY) { - return false; - } - } + if (!isSlotFree(loc.resource, t)) { + return false; } } - return true; } else { - // Checks the availability across time domain. + // Temporal (modulo-II): resource must be free at all congruent steps. for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { - MappingLoc check_loc = {loc.resource, t}; - auto it = occupied_locs.find(check_loc); - if (it != occupied_locs.end()) { - // Check if all existing occupy statuses allow new single-cycle op - for (const auto &entry : it->second) { - if (entry.first != IN_PIPE_OCCUPY) { - return false; - } - } + if (!isSlotFree(loc.resource, t)) { + return false; } } - return true; } + + // Register-cluster constraint: rejects when a *different* register in + // the same RegisterFile is already occupied at a congruent time slot. + if (loc.resource->getKind() == ResourceKind::Register) { + Register *reg = static_cast(loc.resource); + if (!isRegisterWriteAvailableAcrossTime(reg, loc.time_step)) { + return false; + } + } + + return true; } bool MappingState::isAvailableForOccupyStatus(const MappingLoc &loc, int new_occupy_status) const { // Helper lambda to check a single location against all existing entries auto checkSingleLoc = [this, new_occupy_status](const MappingLoc &check_loc) -> bool { - auto it = occupied_locs.find(check_loc); + std::map>>::const_iterator it = + occupied_locs.find(check_loc); if (it == occupied_locs.end() || it->second.empty()) { // Location is free, always available return true; } - // Check against all existing entries at this location - for (const auto &entry : it->second) { + // Checks against all existing entries at this location + for (const std::pair &entry : it->second) { int existing_status = entry.first; - // Implement the pipeline-aware availability rules: + // Implements the pipeline-aware availability rules: // - SINGLE_OCCUPY (0): exclusive, no other op can share // - START_PIPE_OCCUPY (1): cannot coexist with SINGLE or another START // - END_PIPE_OCCUPY (2): cannot coexist with SINGLE or another END @@ -224,20 +420,24 @@ int MappingState::getOccupyStatusAcrossTime(const MappingLoc &loc) const { if (this->is_spatial_only) { for (int t = 0; t < II * kMaxSteps; ++t) { MappingLoc check_loc = {loc.resource, t}; - auto it = occupied_locs.find(check_loc); + std::map>>::const_iterator it = + occupied_locs.find(check_loc); if (it != occupied_locs.end() && !it->second.empty()) { - // Return the first status found (most restrictive) + // Returns the first status found (most restrictive). return it->second[0].first; } } return -1; } else { - // Check across time domain (modulo II) + // Checks across time domain (modulo II). for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { MappingLoc check_loc = {loc.resource, t}; - auto it = occupied_locs.find(check_loc); + std::map>>::const_iterator it = + occupied_locs.find(check_loc); if (it != occupied_locs.end() && !it->second.empty()) { - // Return the first status found (most restrictive) + // Returns the first status found (most restrictive). return it->second[0].first; } } @@ -260,7 +460,7 @@ bool MappingState::isAvailableAcrossTimeInRange(BasicResource *resource, } std::optional MappingState::getOpAt(MappingLoc loc) const { - auto it = loc_to_op.find(loc); + std::map::const_iterator it = loc_to_op.find(loc); if (it == loc_to_op.end()) { return std::nullopt; } @@ -271,7 +471,8 @@ std::optional MappingState::getOpAtLocAcrossTime(MappingLoc loc) const { for (int t = loc.time_step % II; t < II * kMaxSteps; t += II) { MappingLoc check_loc = {loc.resource, t}; - auto it = loc_to_op.find(check_loc); + std::map::const_iterator it = + loc_to_op.find(check_loc); if (it != loc_to_op.end()) { return it->second; } @@ -291,7 +492,8 @@ int MappingState::countOpsAtResource(BasicResource *resource) const { const std::vector & MappingState::getAllLocsOfOp(Operation *op) const { - auto it = op_to_locs.find(op); + std::map>::const_iterator it = + op_to_locs.find(op); if (it != op_to_locs.end()) { return it->second; } @@ -357,29 +559,52 @@ MappingState::getCurrentStepLinks(MappingLoc loc) const { } void MappingState::reserveRoute(Operation *op, ArrayRef path) { - - // Records all mapping locations. - - llvm::errs() << "Reserving route for operation: " << *op << "\n"; llvm::errs() << "Path: "; for (const MappingLoc &loc : path) { - llvm::errs() << loc.resource->getType() << "#" << loc.resource->getId() << " @t=" << loc.time_step << " "; + llvm::errs() << loc.resource->getType() << "#" << loc.resource->getId() + << " @t=" << loc.time_step << " "; } llvm::errs() << "\n"; assert(op_to_locs.find(op) == op_to_locs.end() && "Operation already has reserved locations"); op_to_locs[op] = std::vector(path.begin(), path.end()); + // For each resource in the path, we track: + // - Write occupancy at the first occurrence (data is stored) + // - Read occupancy at the last occurrence (data is consumed) + std::unordered_map resource_first_time; + std::unordered_map resource_last_time; + + for (const MappingLoc &loc : path) { + if (resource_first_time.find(loc.resource) == resource_first_time.end()) { + resource_first_time[loc.resource] = loc.time_step; + } + resource_last_time[loc.resource] = loc.time_step; + } + for (const MappingLoc &loc : path) { loc_to_op[loc] = op; - // Use SINGLE_OCCUPY for route reservations (links/registers) + // Use SINGLE_OCCUPY for route reservations (links/registers). occupied_locs[loc].push_back({SINGLE_OCCUPY, op}); + // Maintain register cluster occupancy records. + if (loc.resource->getKind() == ResourceKind::Register) { + Register *reg = static_cast(loc.resource); + // Record write at first occurrence of this register in the path + if (loc.time_step == resource_first_time[loc.resource]) { + addWriteToRegFileRecord(reg, loc.time_step); + } + // Record read at last occurrence of this register in the path + if (loc.time_step == resource_last_time[loc.resource]) { + addReadToRegFileRecord(reg, loc.time_step); + } + } } } void MappingState::releaseRoute(Operation *op) { - auto it = op_to_locs.find(op); + std::map>::iterator it = + op_to_locs.find(op); if (it == op_to_locs.end()) { return; } @@ -389,20 +614,27 @@ void MappingState::releaseRoute(Operation *op) { for (const MappingLoc &loc : route) { loc_to_op.erase(loc); // Remove entries for this op from occupied_locs - auto occ_it = occupied_locs.find(loc); + std::map>>::iterator + occ_it = occupied_locs.find(loc); if (occ_it != occupied_locs.end()) { - auto &entries = occ_it->second; + std::vector> &entries = occ_it->second; entries.erase( std::remove_if(entries.begin(), entries.end(), [op](const std::pair &entry) { return entry.second == op; }), entries.end()); - // Remove the location entirely if no more entries + // Removes the location entirely if no more entries. if (entries.empty()) { occupied_locs.erase(occ_it); } } + // Maintains register cluster read/write occupancy records. + if (loc.resource->getKind() == ResourceKind::Register) { + Register *reg = static_cast(loc.resource); + removeWriteFromRegFileRecord(reg, loc.time_step); + removeReadFromRegFileRecord(reg, loc.time_step); + } } op_to_locs.erase(it); @@ -421,7 +653,7 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { for (const auto &[op, locs] : op_to_locs) { for (const MappingLoc &loc : locs) { - auto *res = loc.resource; + BasicResource *res = loc.resource; // Only shows tiles in the table. if (res->getType() == "tile") { tile_ids.insert(res->getId()); @@ -451,8 +683,9 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { (II < kTwoDigitThreshold ? kHeaderPrefixLenSingleDigit : kHeaderPrefixLenDoubleDigit) - (slot < kTwoDigitThreshold ? kSingleDigitLen : kDoubleDigitLen); - for (int i = 0; i < padding; ++i) + for (int i = 0; i < padding; ++i) { os << " "; + } os << " | "; } os << "\n"; @@ -460,8 +693,9 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { // Prints separator line. os << "---------+"; for (size_t i = 0; i < time_slots.size(); ++i) { - for (int j = 0; j < kKeyMaxLen + 1; ++j) + for (int j = 0; j < kKeyMaxLen + 1; ++j) { os << "-"; + } os << "+"; } os << "\n"; @@ -476,7 +710,9 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { os << " | "; for (int slot : time_slots) { - auto it = tile_slot_to_ops.find({tile_id, slot}); + std::map, + std::vector>>::const_iterator it = + tile_slot_to_ops.find({tile_id, slot}); if (it != tile_slot_to_ops.end() && !it->second.empty()) { // Multiple operations may exist in the same slot (from different // iterations). Shows the first one. @@ -553,7 +789,7 @@ void MappingState::dumpOpToLocs(llvm::raw_ostream &os) const { void MappingState::encodeMappingState() { for (const auto &[op, locs] : op_to_locs) { llvm::SmallVector mapping_entries; - auto ctx = op->getContext(); + mlir::MLIRContext *ctx = op->getContext(); for (const MappingLoc &loc : locs) { std::string kind_str; if (loc.resource->getKind() == ResourceKind::Tile) { @@ -679,10 +915,14 @@ MappingStateSnapshot::MappingStateSnapshot(const MappingState &mapping_state) { this->occupied_locs = mapping_state.getOccupiedLocs(); this->loc_to_op = mapping_state.getLocToOp(); this->op_to_locs = mapping_state.getOpToLocs(); + this->reg_file_write_to_occupy_operations = mapping_state.getRegFileWriteToOccupyOperations(); + this->reg_file_read_to_occupy_operations = mapping_state.getRegFileReadToOccupyOperations(); } void MappingStateSnapshot::restore(MappingState &mapping_state) { mapping_state.setOccupiedLocs(this->occupied_locs); mapping_state.setLocToOp(this->loc_to_op); mapping_state.setOpToLocs(this->op_to_locs); + mapping_state.setRegFileWriteToOccupyOperations(this->reg_file_write_to_occupy_operations); + mapping_state.setRegFileReadToOccupyOperations(this->reg_file_read_to_occupy_operations); } From cba04b57689eec8909ef905f7d3edb4006e5562c Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Tue, 24 Mar 2026 11:57:51 +0800 Subject: [PATCH 10/26] Resolved conflicts and implemented feedbacks --- include/NeuraDialect/Mapping/MappingState.h | 53 +- lib/NeuraDialect/Mapping/MappingState.cpp | 78 +- lib/NeuraDialect/Mapping/mapping_util.cpp | 162 +- test/code_gen/test_code_generate.mlir | 9 +- .../test_code_generate_king_mesh.mlir | 438 ++++- test/compiler_e2e/fir/fir_kernel.mlir | 40 +- test/e2e/axpy/axpy_kernel.mlir | 13 +- test/e2e/bicg/bicg_int_kernel.mlir | 655 +++++-- test/e2e/bicg/bicg_kernel.mlir | 1136 ++++++++++-- test/e2e/fft/fft_kernel.mlir | 640 ++++++- test/e2e/fir/fir_kernel.mlir | 177 +- test/e2e/fir/fir_kernel_vec.mlir | 125 +- test/e2e/gemm/gemm_kernel.mlir | 589 +----- test/e2e/gemv/gemv_kernel.mlir | 804 +------- test/e2e/histogram/histogram_kernel.mlir | 152 +- test/e2e/relu/relu_kernel.mlir | 23 +- test/e2e/spmv/spmv_kernel.mlir | 1643 +++++++---------- test/mapping_quality/branch_for.mlir | 18 +- test/multi-cgra/kernel_mapping/fir/fir.mlir | 16 +- .../loop-in-kernel/loop-in-kernel.mlir | 4 +- test/multi-cgra/kernel_mapping/relu/relu.mlir | 60 +- .../taskflow/resnet/simple_resnet_tosa.mlir | 223 ++- test/neura/ctrl/branch_for.mlir | 8 +- test/neura/fusion/test.mlir | 448 ++--- 24 files changed, 4116 insertions(+), 3398 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index 7af9deba..cd143f1b 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -105,6 +105,18 @@ class MappingState { bool isAvailableAcrossTimeInRange(BasicResource *resource, int start_time, int exclusive_end_time) const; + // Checks availability of a register's cluster write port across the relevant + // time steps. Returns false if a DIFFERENT register in the same + // RegisterFile is already writing at a congruent time slot. Multiple writes + // to the SAME register are allowed (idempotent). + bool isRegisterWriteAvailableAcrossTime(Register *reg, int time_step) const; + + // Checks availability of a register's cluster read port across the relevant + // time steps. Returns false if a DIFFERENT register in the same + // RegisterFile is already reading at a congruent time slot. Multiple reads + // from the SAME register are allowed (shared read). + bool isRegisterReadAvailableAcrossTime(Register *reg, int time_step) const; + // Gets the operation at a specific (tile/link, time_step) location. std::optional getOpAt(MappingLoc loc) const; @@ -154,13 +166,13 @@ class MappingState { return this->op_to_locs; } const std::unordered_map> & + std::unordered_map> & getRegFileWriteToOccupyOperations() const { return this->reg_file_write_to_occupy_operations; } const std::unordered_map> & + std::unordered_map> & getRegFileReadToOccupyOperations() const { return this->reg_file_read_to_occupy_operations; } @@ -180,14 +192,14 @@ class MappingState { } void setRegFileWriteToOccupyOperations( const std::unordered_map> + std::unordered_map> &records) { this->reg_file_write_to_occupy_operations = records; } void setRegFileReadToOccupyOperations( const std::unordered_map> + std::unordered_map> &records) { this->reg_file_read_to_occupy_operations = records; } @@ -205,21 +217,22 @@ class MappingState { std::map> op_to_locs; // Record table for register cluster write occupancy, keyed by (RegisterFile*, - // time_step % II). Maps to the Operation* that is writing to the cluster at + // time_step % II). Maps to the Register* that is writing to the cluster at // that canonical time slot. At most one writer is allowed per cluster per // slot, enforcing the hardware constraint that a register cluster supports - // only a single write port per cycle. + // only a single write port per cycle. However, multiple writes to the SAME + // register are allowed (idempotent). std::unordered_map> + std::unordered_map> reg_file_write_to_occupy_operations; // Record table for register cluster read occupancy, keyed by (RegisterFile*, - // time_step % II). Maps to the Operation* that is reading from the cluster at - // that canonical time slot. At most one reader is allowed per cluster per - // slot, enforcing the hardware constraint that a register cluster supports - // only a single read port per cycle. + // time_step % II). Maps to the Register* that is reading from the cluster at + // that canonical time slot. Multiple reads from the SAME register are allowed + // (shared read), but reads from DIFFERENT registers in the same cluster are + // rejected (only one read port). std::unordered_map> + std::unordered_map> reg_file_read_to_occupy_operations; // Records the write operation for a register cluster slot. @@ -237,18 +250,6 @@ class MappingState { // Removes the read operation from a register cluster slot // when the op is unbound/released. void removeReadFromRegFileRecord(Register *reg, int time_step); - - // Checks availability of a register resource for writing across the relevant - // time steps, delegating the spatial-only vs modulo-II loop to a single helper. - // Returns false if any congruent time slot is occupied or violates the - // cluster constraint. - bool isRegisterWriteAvailableAcrossTime(Register *reg, int time_step) const; - - // Checks availability of a register resource for reading across the relevant - // time steps, delegating the spatial-only vs modulo-II loop to a single helper. - // Returns false if any congruent time slot is occupied or violates the - // cluster constraint. - bool isRegisterReadAvailableAcrossTime(Register *reg, int time_step) const; }; } // namespace neura @@ -271,10 +272,10 @@ class MappingStateSnapshot { std::map loc_to_op; std::map> op_to_locs; std::unordered_map> + std::unordered_map> reg_file_write_to_occupy_operations; std::unordered_map> + std::unordered_map> reg_file_read_to_occupy_operations; }; } // namespace neura diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index d626e10c..17a38ecc 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -47,10 +47,19 @@ bool MappingState::addWriteToRegFileRecord(Register *reg, int time_step) { // one. This disallows both: // * ADD NORTH, SOUTH -> $0, $1 (single op writing two regs in a cluster) // * ADD -> $0 + MOV -> $1 (two ops writing different regs in a cluster) + // + // However, multiple writes to the SAME register are allowed (idempotent): + // * Route A writes $0 @t=4, Route B also writes $0 @t=4 + // -> same register, same port address, no conflict. if (it != slot_map.end()) { + // Same register -> OK (idempotent). + if (it->second == reg) { + return true; + } + // Different register -> conflict (only one write port). return false; } - slot_map[canonical_step] = nullptr; // Placeholder; caller identity not needed + slot_map[canonical_step] = reg; return true; } @@ -62,13 +71,26 @@ bool MappingState::addReadToRegFileRecord(Register *reg, int time_step) { int canonical_step = time_step % II; auto &slot_map = reg_file_read_to_occupy_operations[reg_file]; auto it = slot_map.find(canonical_step); - // Enforces the one-read-per-cluster-per-slot constraint: reject any second - // reader, regardless of whether it targets the same register or a different - // one. + // Multiple reads from the SAME register are allowed (shared read port). + // Reads from a DIFFERENT register in the same cluster are rejected + // (only one read port, so only one register address can be driven). + // + // Example 1 (allowed – shared read from same register): + // Route A reads $0 @t=7, Route B also reads $0 @t=7 + // -> same register, read port is shared (broadcast to both consumers). + // + // Example 2 (rejected – two different registers in the same cluster): + // Route A reads $0 @t=7, Route B reads $1 @t=7 ($0,$1 in same RegFile) + // -> only one read port, cannot drive two different addresses. if (it != slot_map.end()) { + // Same register -> OK (shared read). + if (it->second == reg) { + return true; + } + // Different register -> conflict (only one read port). return false; } - slot_map[canonical_step] = nullptr; // Placeholder; caller identity not needed + slot_map[canonical_step] = reg; return true; } @@ -123,8 +145,9 @@ bool MappingState::isRegisterWriteAvailableAcrossTime(Register *reg, return true; } - // Checks whether the cluster already has a writer at any congruent time slot. - auto checkSlot = [this, reg_file](int t) -> bool { + // Checks whether the cluster already has a writer at any congruent time slot + // targeting a different register. Same-register writes are allowed. + auto checkSlot = [this, reg_file, reg](int t) -> bool { int canonical_step = t % II; auto reg_file_it = reg_file_write_to_occupy_operations.find(reg_file); if (reg_file_it == reg_file_write_to_occupy_operations.end()) { @@ -134,7 +157,11 @@ bool MappingState::isRegisterWriteAvailableAcrossTime(Register *reg, if (slot_it == reg_file_it->second.end()) { return true; } - // Conflict: an existing writer in the cluster blocks a new write. + // Same register -> no conflict. + if (slot_it->second == reg) { + return true; + } + // Different register -> conflict (only one write port). return false; }; @@ -161,8 +188,9 @@ bool MappingState::isRegisterReadAvailableAcrossTime(Register *reg, return true; } - // Checks whether the cluster already has a reader at any congruent time slot. - auto checkSlot = [this, reg_file](int t) -> bool { + // Checks whether the cluster already has a reader at any congruent time slot + // targeting a different register. Same-register reads are allowed (shared). + auto checkSlot = [this, reg_file, reg](int t) -> bool { int canonical_step = t % II; auto reg_file_it = reg_file_read_to_occupy_operations.find(reg_file); if (reg_file_it == reg_file_read_to_occupy_operations.end()) { @@ -172,7 +200,11 @@ bool MappingState::isRegisterReadAvailableAcrossTime(Register *reg, if (slot_it == reg_file_it->second.end()) { return true; } - // Conflict: an existing reader in the cluster blocks a new read. + // Same register -> no conflict (shared read). + if (slot_it->second == reg) { + return true; + } + // Different register -> conflict (only one read port). return false; }; @@ -331,14 +363,22 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { } } - // Register-cluster constraint: rejects when a *different* register in - // the same RegisterFile is already occupied at a congruent time slot. - if (loc.resource->getKind() == ResourceKind::Register) { - Register *reg = static_cast(loc.resource); - if (!isRegisterWriteAvailableAcrossTime(reg, loc.time_step)) { - return false; - } - } + // NOTE: Register-file (cluster) port constraints (both write-vs-write AND + // read-vs-read) are enforced inside getAvailableRegister() in + // mapping_util.cpp, NOT here. That function knows which time step is a + // write (start_time) and which is a read (exclusive_end_time - 1), so it + // calls: + // - isRegisterWriteAvailableAcrossTime(reg, start_time) + // - isRegisterReadAvailableAcrossTime(reg, exclusive_end_time - 1) + // + // We cannot check them here because isAvailableAcrossTime is called for + // every time step in a register's holding range (e.g., t=4 through t=16). + // Only t=4 actually uses the write port and only t=16 uses the read port; + // intermediate steps t=5..t=15 are "hold" steps that use neither port. + // Applying port constraints here would wrongly reject valid hold steps. + // + // Read and write ports are independent — one read AND one write can happen + // simultaneously on the same RegisterFile (they are separate ports). return true; } diff --git a/lib/NeuraDialect/Mapping/mapping_util.cpp b/lib/NeuraDialect/Mapping/mapping_util.cpp index 9602898f..3e4976bb 100644 --- a/lib/NeuraDialect/Mapping/mapping_util.cpp +++ b/lib/NeuraDialect/Mapping/mapping_util.cpp @@ -1,8 +1,6 @@ #include #include -#include "NeuraDialect/Architecture/Architecture.h" -#include "NeuraDialect/Mapping/MappingState.h" #include "NeuraDialect/Mapping/mapping_util.h" #include "NeuraDialect/NeuraOps.h" #include "mlir/Dialect/Func/IR/FuncOps.h" @@ -10,6 +8,7 @@ #include "mlir/IR/Operation.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/DenseSet.h" +#include "llvm/Support/Error.h" #include "llvm/Support/raw_ostream.h" #include @@ -198,7 +197,7 @@ mlir::neura::collectRecurrenceCycles(Region ®ion) { region.walk([&](neura::CtrlMovOp ctrl_mov_op) { Value target = ctrl_mov_op.getTarget(); - neura::ReserveOp reserve_op = target.getDefiningOp(); + auto reserve_op = target.getDefiningOp(); if (!reserve_op) { return; } @@ -219,7 +218,7 @@ mlir::neura::collectRecurrenceCycles(Region ®ion) { traverseAlongPath(parent_op, reserve_value, current_path, visited_in_path, collected_paths); - for (RecurrenceCycle &cycle : collected_paths) { + for (auto &cycle : collected_paths) { cycle.operations.push_back(ctrl_mov_op); recurrence_cycles.push_back(std::move(cycle)); } @@ -262,10 +261,9 @@ mlir::neura::getTopologicallySortedOps(Region ®ion) { std::deque ready_queue; // Collects recurrence cycle ops. - SmallVector recurrence_cycles = - collectRecurrenceCycles(region); + auto recurrence_cycles = collectRecurrenceCycles(region); llvm::DenseSet recurrence_ops; - for (const RecurrenceCycle &cycle : recurrence_cycles) { + for (const auto &cycle : recurrence_cycles) { for (Operation *op : cycle.operations) { recurrence_ops.insert(op); } @@ -461,8 +459,7 @@ mlir::Operation *mlir::neura::getMaterializedBackwardUser(Operation *op) { assert(isa(target.getDefiningOp()) && "Expected the user of ctrl_mov target to be a reserve operation"); - neura::ReserveOp reserve_op = - dyn_cast(target.getDefiningOp()); + auto reserve_op = dyn_cast(target.getDefiningOp()); // Skip ctrl_mov users of reserve; return the first materialized user. for (Operation *user : reserve_op.getResult().getUsers()) { @@ -482,72 +479,6 @@ mlir::Operation *mlir::neura::getMaterializedBackwardUser(Operation *op) { "No materialized backward user (i.e., phi) found for ctrl_mov"); } -// This struct represents a pending data_mov/ctrl_mov that is being routed, -// along with its routing path. -struct PendingRoute { - Operation *mov_op; - std::vector path; -}; - -bool hasSafeOperandIterationAtConsume( - Operation *op, const std::vector &operand_routes, int ii) { - assert(ii > 0 && "II should be positive"); - - if (operand_routes.empty()) { - return true; - } - - for (const PendingRoute &route : operand_routes) { - // Records the time range that each register is occupied on this route. - // >, this means the register is occupied - // from min_time to max_time. - DenseMap> reg_time_range; - for (const MappingLoc &loc : route.path) { - Register *reg = dyn_cast(loc.resource); - if (!reg) { - continue; - } - - // For each register, tracks its live interval on this path by keeping - // the earliest and latest time it appears. - // Inserts a new entry if the register is seen for the first time. - auto [it, inserted] = reg_time_range.try_emplace( - reg, std::make_pair(loc.time_step, loc.time_step)); - - // If this register has been seen before, updates the time range to - // include the new time step. - if (!inserted) { - // Updates the min_time for this seen register if the new time step is - // earlier. - it->second.first = std::min(it->second.first, loc.time_step); - // Updates the max_time for this seen register if the new time step is - // later. - it->second.second = std::max(it->second.second, loc.time_step); - } - } - - // Register occupancy is tracked in per-cycle slots (half-open in routing - // builders), so max_t - min_t + 1 corresponds to the hold duration. - for (const auto &entry : reg_time_range) { - Register *reg = entry.first; - int min_t = entry.second.first; - int max_t = entry.second.second; - int occupancy = max_t - min_t + 1; - if (occupancy > ii) { - llvm::errs() << "[DEBUG] Reject schedule due to register hold >= next " - "iteration window. op=" - << *op << ", II=" << ii << ", reg=#" << reg->getId() - << ", hold_start=" << min_t << ", hold_end=" << max_t - << ", hold_len=" << occupancy - << ", mov_op=" << *route.mov_op << "\n"; - return false; - } - } - } - - return true; -} - llvm::SmallVector mlir::neura::getMaterializedUserOps(Operation *op) { llvm::SmallVector result; @@ -577,7 +508,7 @@ mlir::neura::getMaterializedUserOps(Operation *op) { // Specially handles the ctrl_mov, i.e., the second operand of ctrl_mov is // treated as a target/destination/user in terms of dataflow. - if (neura::CtrlMovOp ctrl_mov = dyn_cast(curr)) { + if (auto ctrl_mov = dyn_cast(curr)) { Value target = ctrl_mov.getTarget(); for (Operation *user : target.getUsers()) { if (visited.insert(user).second) { @@ -620,12 +551,28 @@ bool mlir::neura::tryRouteBackwardMove(Operation *mov_op, MappingLoc src_loc, Register *mlir::neura::getAvailableRegister(const MappingState &state, Tile *tile, int start_time, int exclusive_end_time) { - // The single-read-port constraint (only one register per RegisterFile may be - // used at a time) is now enforced inside isAvailableAcrossTime(), so we only - // need to find the first register that is free across the requested range. + // Finds the first register that is free across the requested range AND + // satisfies the single-port cluster constraints: + // - Write port: at start_time, only one register per RegisterFile may be + // written (same-register writes are allowed/idempotent). + // - Read port: at (exclusive_end_time - 1), only one register per + // RegisterFile may be read (same-register reads are shared/allowed). + // Read and write ports are independent — one read AND one write can happen + // simultaneously on the same RegisterFile. for (Register *reg : tile->getRegisters()) { - if (state.isAvailableAcrossTimeInRange(reg, start_time, exclusive_end_time)) - return reg; + if (!state.isAvailableAcrossTimeInRange(reg, start_time, + exclusive_end_time)) { + continue; + } + // Check cluster write-port constraint at the write time step. + if (!state.isRegisterWriteAvailableAcrossTime(reg, start_time)) { + continue; + } + // Check cluster read-port constraint at the read time step. + if (!state.isRegisterReadAvailableAcrossTime(reg, exclusive_end_time - 1)) { + continue; + } + return reg; } return nullptr; } @@ -804,8 +751,8 @@ Operation *mlir::neura::getMaterializedProducer(Value operand) { assert( isa(producer) && "Expected a DataMovOp as operand producer for non-ReserveOp operations"); - neura::DataMovOp mov_op = dyn_cast(producer); - Operation *materialized_producer = mov_op.getOperand().getDefiningOp(); + auto mov_op = dyn_cast(producer); + auto materialized_producer = mov_op.getOperand().getDefiningOp(); return materialized_producer; } @@ -818,8 +765,7 @@ int mlir::neura::getPhysicalHops(const std::vector &producers, for (Operation *producer : producers) { // Get the last location of the producer. - std::vector producer_locs = - mapping_state.getAllLocsOfOp(producer); + auto producer_locs = mapping_state.getAllLocsOfOp(producer); assert(!producer_locs.empty() && "No locations found for producer"); MappingLoc producer_loc = producer_locs.back(); @@ -838,8 +784,7 @@ bool mlir::neura::canReachLocInTime(const std::vector &producers, for (Operation *producer : producers) { // Get the last location of the producer. - std::vector producer_locs = - mapping_state.getAllLocsOfOp(producer); + auto producer_locs = mapping_state.getAllLocsOfOp(producer); assert(!producer_locs.empty() && "No locations found for producer"); MappingLoc producer_loc = producer_locs.back(); @@ -983,7 +928,7 @@ mlir::neura::calculateAward(Operation *op, std::set &critical_ops, // Assembles all the backward users if exist. std::vector backward_users; for (Operation *user : getCtrlMovUsers(op)) { - neura::CtrlMovOp ctrl_mov = dyn_cast(user); + auto ctrl_mov = dyn_cast(user); assert(ctrl_mov && "Expected user to be a CtrlMovOp"); mlir::Operation *materialized_backward_op = getMaterializedBackwardUser(ctrl_mov); @@ -1041,7 +986,7 @@ mlir::neura::calculateAward(Operation *op, std::set &critical_ops, // Computes proximity bonus to backward users. Closer is better for // recurrence routing. - for (MappingLoc &backward_user_loc : backward_users_locs) { + for (auto &backward_user_loc : backward_users_locs) { Tile *backward_tile = dyn_cast(backward_user_loc.resource); if (backward_tile) { int backward_hops = std::abs(backward_tile->getX() - tile->getX()) + @@ -1071,7 +1016,7 @@ mlir::neura::calculateAward(Operation *op, std::set &critical_ops, producers.empty() || canReachLocInTime(producers, tile_loc_candidate, t, mapping_state); bool meet_backward_user_constraint = true; - for (MappingLoc &backward_user_loc : backward_users_locs) { + for (auto &backward_user_loc : backward_users_locs) { // Checks if the location can reach all backward users. if (!canReachLocInTime(tile_loc_candidate, backward_user_loc, backward_user_loc.time_step + @@ -1094,12 +1039,12 @@ mlir::neura::calculateAward(Operation *op, std::set &critical_ops, int occupied_in = 0; int occupied_out = 0; - for (Link *link : tile->getInLinks()) { + for (auto *link : tile->getInLinks()) { if (!mapping_state.isAvailableAcrossTime({link, t})) { occupied_in++; } } - for (Link *link : tile->getOutLinks()) { + for (auto *link : tile->getOutLinks()) { if (!mapping_state.isAvailableAcrossTime({link, t})) { occupied_out++; } @@ -1196,11 +1141,11 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, target_loc.resource, target_loc.time_step, latency, op); if (bind_success) { llvm::errs() << "[DEBUG] Bound multi-cycle op (latency=" << latency - << ") " << *op - << " onto loc: " << target_loc.resource->getType() << "#" + << ") " << *op << " onto loc: " + << target_loc.resource->getType() << "#" << target_loc.resource->getId() - << " @t=" << target_loc.time_step - << " to t=" << (target_loc.time_step + latency - 1) << "\n"; + << " @t=" << target_loc.time_step << " to t=" + << (target_loc.time_step + latency - 1) << "\n"; } } else { // For single-cycle ops, use default SINGLE_OCCUPY binding @@ -1214,7 +1159,6 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, } if (bind_success) { - std::vector pending_operand_routes; std::vector routed_operands; std::vector routed_ctrl_movs; // Tries to route the data move operations. @@ -1242,8 +1186,8 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, std::vector route_path; if (tryRouteForwardMove(data_move, src_loc, target_loc, mapping_state, route_path)) { + // Reserves the route for the data move operation. mapping_state.reserveRoute(data_move, route_path); - pending_operand_routes.push_back({data_move, std::move(route_path)}); routed_operands.push_back(data_move); llvm::errs() << "[DEBUG] Successfully routed data move: " << *data_move << " from " << src_loc.resource->getType() << "#" @@ -1261,25 +1205,15 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, << " @t=" << target_loc.time_step << "; so unschedule op\n"; mapping_state.unbindOp(op); for (Operation *routed_op : routed_operands) { + llvm::errs() << "[DEBUG] Releasing route for routed operand: " + << *routed_op << "\n"; mapping_state.releaseRoute(routed_op); } return false; } - - if (!hasSafeOperandIterationAtConsume(op, pending_operand_routes, - mapping_state.getII())) { - llvm::errs() << "[DEBUG] Operand iteration shift at consume time; " - "unschedule op\n"; - mapping_state.unbindOp(op); - for (Operation *routed_op : routed_operands) { - mapping_state.releaseRoute(routed_op); - } - return false; - } - // Checks whether the operation's user is a ctrl_mov. for (Operation *user : getCtrlMovUsers(op)) { - neura::CtrlMovOp ctrl_mov = dyn_cast(user); + auto ctrl_mov = dyn_cast(user); llvm::errs() << "[DEBUG] Found ctrl_mov user: " << *ctrl_mov << "\n"; assert(ctrl_mov && "Expected user to be a CtrlMovOp"); mlir::Operation *materialized_backward_op = @@ -1331,11 +1265,13 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, int mlir::neura::getOpLatency(Operation *op) { // Try to get the latency attribute from the operation - if (IntegerAttr latency_attr = op->getAttrOfType("latency")) { + if (auto latency_attr = op->getAttrOfType("latency")) { return latency_attr.getInt(); } // Default to single-cycle if no latency attribute is present return 1; } -bool mlir::neura::isMultiCycleOp(Operation *op) { return getOpLatency(op) > 1; } \ No newline at end of file +bool mlir::neura::isMultiCycleOp(Operation *op) { + return getOpLatency(op) > 1; +} \ No newline at end of file diff --git a/test/code_gen/test_code_generate.mlir b/test/code_gen/test_code_generate.mlir index 7cf13940..81fe6906 100644 --- a/test/code_gen/test_code_generate.mlir +++ b/test/code_gen/test_code_generate.mlir @@ -32,8 +32,7 @@ func.func @loop_test() -> f32 { ^exit(%result: f32): return %result : f32 } -// MAPPING: module { -// MAPPING-NEXT: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // MAPPING-NEXT: %0 = "neura.constant"() <{value = 10 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"(%1) {dfg_id = 16 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data @@ -86,7 +85,7 @@ func.func @loop_test() -> f32 { // MAPPING-NEXT: %47 = neura.grant_predicate %45, %46 {dfg_id = 55 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %47 -> %21 {dfg_id = 61 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %48 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %49 = "neura.data_mov"(%38) {dfg_id = 48 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %49 = "neura.data_mov"(%38) {dfg_id = 48 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %50 = neura.grant_predicate %48, %49 {dfg_id = 54 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %50 -> %18 {dfg_id = 60 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %51 = "neura.data_mov"(%17) {dfg_id = 31 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data @@ -475,10 +474,10 @@ func.func @loop_test() -> f32 { // ASM-NEXT: } (idx_per_ii=3) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: ICMP_SLT, [WEST, RED], [SOUTH, RED] -> [SOUTH, RED], [NORTH, RED], [WEST, RED], [$16], [$8], [EAST, RED] (t=4, inv_iters=1) +// ASM-NEXT: ICMP_SLT, [WEST, RED], [SOUTH, RED] -> [SOUTH, RED], [NORTH, RED], [WEST, RED], [$1], [$8], [EAST, RED] (t=4, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=5, inv_iters=1) // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { diff --git a/test/code_gen/test_code_generate_king_mesh.mlir b/test/code_gen/test_code_generate_king_mesh.mlir index a35f5704..b832b9b1 100644 --- a/test/code_gen/test_code_generate_king_mesh.mlir +++ b/test/code_gen/test_code_generate_king_mesh.mlir @@ -32,7 +32,7 @@ func.func @loop_test_king_mesh() -> f32 { return %result : f32 } -// MAPPING: func.func @loop_test_king_mesh() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPING: func.func @loop_test_king_mesh() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // MAPPING-NEXT: %0 = "neura.constant"() <{value = 10 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"(%1) {dfg_id = 16 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data @@ -72,14 +72,14 @@ func.func @loop_test_king_mesh() -> f32 { // MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 42 : i32, mapping_locs = [{id = 49 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %37 = "neura.data_mov"(%17) {dfg_id = 32 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %38 = "neura.icmp"(%36, %37) <{cmpType = "slt"}> {dfg_id = 45 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %39 = "neura.data_mov"(%35) {dfg_id = 41 : i32, mapping_locs = [{id = 48 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 321 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %39 = "neura.data_mov"(%35) {dfg_id = 41 : i32, mapping_locs = [{id = 48 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %40 = "neura.data_mov"(%38) {dfg_id = 51 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %41 = neura.grant_predicate %39, %40 {dfg_id = 57 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %41 -> %27 {dfg_id = 63 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %42 = "neura.data_mov"(%32) {dfg_id = 44 : i32, mapping_locs = [{id = 57 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 194 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 194 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %43 = "neura.data_mov"(%38) {dfg_id = 50 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 52 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 195 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 195 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %42 = "neura.data_mov"(%32) {dfg_id = 44 : i32, mapping_locs = [{id = 57 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %43 = "neura.data_mov"(%38) {dfg_id = 50 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 52 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 208 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 208 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %44 = neura.grant_predicate %42, %43 {dfg_id = 56 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %44 -> %24 {dfg_id = 62 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %44 -> %24 {dfg_id = 62 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %45 = "neura.data_mov"(%23) {dfg_id = 36 : i32, mapping_locs = [{id = 57 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %46 = "neura.data_mov"(%38) {dfg_id = 49 : i32, mapping_locs = [{id = 23 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %47 = neura.grant_predicate %45, %46 {dfg_id = 55 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data @@ -87,11 +87,11 @@ func.func @loop_test_king_mesh() -> f32 { // MAPPING-NEXT: %48 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 52 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %49 = "neura.data_mov"(%38) {dfg_id = 48 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %50 = neura.grant_predicate %48, %49 {dfg_id = 54 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %50 -> %18 {dfg_id = 60 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %51 = "neura.data_mov"(%17) {dfg_id = 31 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %50 -> %18 {dfg_id = 60 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %51 = "neura.data_mov"(%17) {dfg_id = 31 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %52 = "neura.data_mov"(%38) {dfg_id = 47 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %53 = neura.grant_predicate %51, %52 {dfg_id = 53 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %53 -> %15 {dfg_id = 59 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %53 -> %15 {dfg_id = 59 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %54 = "neura.data_mov"(%38) {dfg_id = 46 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %55 = "neura.not"(%54) {dfg_id = 52 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %56 = "neura.data_mov"(%32) {dfg_id = 43 : i32, mapping_locs = [{id = 55 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 47 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data @@ -101,31 +101,415 @@ func.func @loop_test_king_mesh() -> f32 { // MAPPING-NEXT: neura.return_value %59 : !neura.data {dfg_id = 66 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 2 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 10 : i32} // MAPPING-NEXT: } +// MAPPING-NEXT: } -// YAML: array_config: -// YAML: columns: 4 -// YAML: rows: 4 -// YAML: compiled_ii: 5 -// YAML: - column: 2 -// YAML: row: 1 -// YAML: - opcode: "GRANT_PREDICATE" -// YAML: id: 54 -// YAML: - operand: "NORTHWEST" -// YAML: - opcode: "DATA_MOV" -// YAML: id: 50 -// YAML: - operand: "NORTHWEST" -// YAML: - opcode: "DATA_MOV" -// YAML: id: 49 -// YAML: - operand: "SOUTHWEST" +// YAML: array_config: +// YAML-NEXT: columns: 4 +// YAML-NEXT: rows: 4 +// YAML-NEXT: compiled_ii: 5 +// YAML-NEXT: cores: +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 490001 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTHEAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CONSTANT" +// YAML-NEXT: id: 4 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#0.000000" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 20 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "4" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 52 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 53 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CONSTANT" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#10" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 16 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 26 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ICMP_SLT" +// YAML-NEXT: id: 45 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTHEAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "6" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 54 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTHWEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 36 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 44 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 50 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTHWEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 49 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTHWEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 55 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 34 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTHWEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 56 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 30 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "8" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 58 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 64 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" -// ASM: # Compiled II: 5 -// ASM: PE(2,1): +// ASM: # Compiled II: 5 +// ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTHEAST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [#0.000000] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [$0] -> [NORTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(0,1): +// ASM-NEXT: { +// ASM-NEXT: NOT, [EAST, RED] -> [NORTH, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$8] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [#10] -> [$0] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$8] -> [$0], [$8] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: ICMP_SLT, [NORTH, RED], [$0] -> [NORTHEAST, RED], [NORTH, RED], [SOUTH, RED], [EAST, RED], [$0], [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(2,1): // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [NORTHWEST, RED] (t=5, inv_iters=1) // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$2] (t=6, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTHWEST, RED] -> [$3] (t=6, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=6, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTHWEST, RED] -> [$16] (t=6, inv_iters=1) // ASM-NEXT: DATA_MOV, [SOUTHWEST, RED] -> [$1] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED] (t=7, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTHWEST, RED] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$8] (t=8, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$8] -> [NORTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(0,2): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$0] (t=7, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VALUE, [$0] (t=8, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(1,2): +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [#1] -> [$0] (t=0, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [SOUTHEAST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=1, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=6, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [SOUTHEAST, RED] -> [$8] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$8] -> [$0], [SOUTHEAST, RED] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: ADD, [EAST, RED], [$0] -> [SOUTH, RED], [EAST, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(2,2): +// ASM-NEXT: { +// ASM-NEXT: FADD, [SOUTH, RED], [$0] -> [SOUTH, RED], [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTHWEST, RED] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [WEST, RED] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$0] (t=8, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [$0], [SOUTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(3,2): +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [#0] -> [$0] (t=0, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [$0] -> [WEST, RED] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [#3.000000] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [$0] -> [WEST, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) diff --git a/test/compiler_e2e/fir/fir_kernel.mlir b/test/compiler_e2e/fir/fir_kernel.mlir index 60d2f86f..af09176c 100644 --- a/test/compiler_e2e/fir/fir_kernel.mlir +++ b/test/compiler_e2e/fir/fir_kernel.mlir @@ -8,8 +8,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f64 = dense<64> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, i64 = dense<64> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { -// MAPPING-NEXT: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data @@ -32,7 +31,7 @@ // MAPPING-NEXT: %19 = "neura.icmp"(%18) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 23 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %21 = "neura.not"(%20) {dfg_id = 26 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%17) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%17) {dfg_id = 16 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %23 = "neura.data_mov"(%21) {dfg_id = 29 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %24 = neura.grant_predicate %22, %23 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %24 -> %5 {dfg_id = 35 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data @@ -47,7 +46,6 @@ // MAPPING-NEXT: neura.return_value %31 : !neura.data {dfg_id = 33 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 2 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} // MAPPING-NEXT: } -// MAPPING-NEXT: } // ASM: # Compiled II: 5 @@ -98,13 +96,13 @@ // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [WEST, RED], [SOUTH, RED], [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$1] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED] (t=3, inv_iters=0) @@ -355,7 +353,7 @@ // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" @@ -394,7 +392,7 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: @@ -418,5 +416,31 @@ // YAML-NEXT: id: 26 // YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "11" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 0 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" diff --git a/test/e2e/axpy/axpy_kernel.mlir b/test/e2e/axpy/axpy_kernel.mlir index 79314266..a4234117 100644 --- a/test/e2e/axpy/axpy_kernel.mlir +++ b/test/e2e/axpy/axpy_kernel.mlir @@ -22,8 +22,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // -// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, f80 = dense<128> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, i64 = dense<64> : vector<2xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { -// MAPPING-NEXT: func.func @kernel_axpy_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel_axpy_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = neura.reserve {dfg_id = 1 : i32} : !neura.data // MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data @@ -55,7 +54,7 @@ // MAPPING-NEXT: %27 = neura.grant_predicate %25, %26 {dfg_id = 31 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %27 -> %1 {dfg_id = 33 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %28 = "neura.data_mov"(%22) {dfg_id = 19 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%22) {dfg_id = 20 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%22) {dfg_id = 20 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 24 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %31 = "neura.data_mov"(%30) {dfg_id = 27 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: neura.return_void %31 : !neura.data {dfg_id = 30 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} @@ -431,19 +430,19 @@ // ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#16] -> [$0], [WEST, RED], [$16] (t=3, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#16] -> [$0], [WEST, RED], [$9] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: NOT, [$0] -> [$0] (t=4, inv_iters=0) // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$16] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$9] -> [WEST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(3,2): // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GEP, [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: GEP, [arg0], [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM: PE(0,3): // ASM-NEXT: { @@ -458,7 +457,7 @@ // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [WEST, RED], [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: GEP, [arg1], [$0] -> [WEST, RED], [SOUTH, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) diff --git a/test/e2e/bicg/bicg_int_kernel.mlir b/test/e2e/bicg/bicg_int_kernel.mlir index 27310537..3c8db684 100644 --- a/test/e2e/bicg/bicg_int_kernel.mlir +++ b/test/e2e/bicg/bicg_int_kernel.mlir @@ -53,10 +53,10 @@ // MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 41 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %21 = "neura.gep"(%20) <{operandSegmentSizes = array}> {dfg_id = 48 : i32, lhs_value = "%arg0", mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %22 = neura.reserve {dfg_id = 6 : i32} : !neura.data -// MAPPING-NEXT: %23 = "neura.data_mov"(%9) {dfg_id = 22 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 1 : i32}, {id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 2 : i32}, {id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.data_mov"(%9) {dfg_id = 22 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 1 : i32}, {id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %24 = neura.phi_start %23, %22 {dfg_id = 28 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %25 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%12) {dfg_id = 23 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 1 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%12) {dfg_id = 23 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 1 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = neura.phi_start %26, %25 {dfg_id = 29 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %28 = neura.reserve {dfg_id = 8 : i32} : !neura.data // MAPPING-NEXT: %29 = "neura.data_mov"(%14) {dfg_id = 43 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data @@ -71,7 +71,7 @@ // MAPPING-NEXT: %38 = "neura.data_mov"(%9) {dfg_id = 21 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %39 = neura.phi_start %38, %37 {dfg_id = 27 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %40 = "neura.data_mov"(%36) {dfg_id = 75 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 25 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %41 = "neura.data_mov"(%39) {dfg_id = 36 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 2 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %41 = "neura.data_mov"(%39) {dfg_id = 36 : i32, mapping_locs = [{id = 4009 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 2 : i32}, {id = 4009 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 3 : i32}, {id = 4009 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 4 : i32}, {id = 4009 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %42 = "neura.gep"(%40, %41) <{operandSegmentSizes = array}> {dfg_id = 81 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %43 = "neura.data_mov"(%42) {dfg_id = 90 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %44 = "neura.load"(%43) {dfg_id = 98 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data @@ -80,7 +80,7 @@ // MAPPING-NEXT: %47 = "neura.data_mov"(%46) {dfg_id = 76 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %48 = "neura.data_mov"(%44) {dfg_id = 108 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %49 = "neura.mul"(%47, %48) {dfg_id = 111 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %50 = "neura.data_mov"(%39) {dfg_id = 35 : i32, mapping_locs = [{id = 4003 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 2 : i32}, {id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %50 = "neura.data_mov"(%39) {dfg_id = 35 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %51 = "neura.gep"(%50) <{operandSegmentSizes = array}> {dfg_id = 47 : i32, lhs_value = "%arg3", mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %52 = "neura.data_mov"(%51) {dfg_id = 56 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %53 = "neura.load"(%52) {dfg_id = 65 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data @@ -103,7 +103,7 @@ // MAPPING-NEXT: %69 = "neura.data_mov"(%65) {dfg_id = 115 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %70 = "neura.add"(%68, %69) {dfg_id = 119 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %71 = "neura.data_mov"(%70) {dfg_id = 124 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 8001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 8001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 8001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 8001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: "neura.store"(%71, %72) {dfg_id = 129 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %73 = "neura.data_mov"(%39) {dfg_id = 33 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %74 = "neura.add"(%73) {dfg_id = 45 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data @@ -112,29 +112,29 @@ // MAPPING-NEXT: %77 = "neura.data_mov"(%76) {dfg_id = 71 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %78 = "neura.not"(%77) {dfg_id = 80 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %79 = "neura.data_mov"(%74) {dfg_id = 52 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 160 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = "neura.data_mov"(%78) {dfg_id = 89 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = "neura.data_mov"(%78) {dfg_id = 89 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %81 = neura.grant_predicate %79, %80 {dfg_id = 97 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %81 -> %37 {dfg_id = 106 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 4002 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 4002 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %82 = "neura.data_mov"(%36) {dfg_id = 74 : i32, mapping_locs = [{id = 292 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 4 : i32}, {id = 292 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 5 : i32}, {id = 292 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 6 : i32}, {id = 292 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 7 : i32}, {id = 292 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 8 : i32}, {id = 292 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 9 : i32}, {id = 292 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = "neura.data_mov"(%78) {dfg_id = 88 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 293 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 8 : i32}, {id = 293 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 9 : i32}, {id = 293 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %81 -> %37 {dfg_id = 106 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 4016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 4016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 4016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %82 = "neura.data_mov"(%36) {dfg_id = 74 : i32, mapping_locs = [{id = 312 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 4 : i32}, {id = 312 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 312 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 6 : i32}, {id = 312 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 7 : i32}, {id = 312 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 312 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 312 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = "neura.data_mov"(%78) {dfg_id = 88 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 298 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 8 : i32}, {id = 298 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 9 : i32}, {id = 298 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %84 = neura.grant_predicate %82, %83 {dfg_id = 96 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %84 -> %34 {dfg_id = 105 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %85 = "neura.data_mov"(%33) {dfg_id = 58 : i32, mapping_locs = [{id = 290 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 290 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 290 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%78) {dfg_id = 87 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 5 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 291 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 291 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 291 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %85 = "neura.data_mov"(%33) {dfg_id = 58 : i32, mapping_locs = [{id = 304 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 304 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 304 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 304 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%78) {dfg_id = 87 : i32, mapping_locs = [{id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 297 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 297 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 297 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %87 = neura.grant_predicate %85, %86 {dfg_id = 95 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %87 -> %31 {dfg_id = 104 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %88 = "neura.data_mov"(%30) {dfg_id = 60 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %89 = "neura.data_mov"(%78) {dfg_id = 86 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 289 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 289 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 289 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %89 = "neura.data_mov"(%78) {dfg_id = 86 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %90 = neura.grant_predicate %88, %89 {dfg_id = 94 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %90 -> %28 {dfg_id = 103 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 8002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 8002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 8002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 8002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 8002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 8002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %90 -> %28 {dfg_id = 103 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 8008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 8008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %91 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %92 = "neura.data_mov"(%78) {dfg_id = 85 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 162 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 162 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 162 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %92 = "neura.data_mov"(%78) {dfg_id = 85 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 176 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %93 = neura.grant_predicate %91, %92 {dfg_id = 93 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %93 -> %25 {dfg_id = 102 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4004 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 10 : i32}, {id = 4004 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 4004 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 4004 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %93 -> %25 {dfg_id = 102 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4024 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 4024 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 4024 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 4024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %94 = "neura.data_mov"(%24) {dfg_id = 38 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %95 = "neura.data_mov"(%78) {dfg_id = 84 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 11 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %95 = "neura.data_mov"(%78) {dfg_id = 84 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 11 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %96 = neura.grant_predicate %94, %95 {dfg_id = 92 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %96 -> %22 {dfg_id = 101 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %96 -> %22 {dfg_id = 101 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %97 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %98 = "neura.data_mov"(%76) {dfg_id = 70 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %99 = neura.grant_predicate %97, %98 {dfg_id = 79 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data @@ -147,7 +147,7 @@ // MAPPING-NEXT: %106 = "neura.icmp"(%105) <{cmpType = "eq"}> {dfg_id = 109 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 8 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %107 = "neura.data_mov"(%106) {dfg_id = 114 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %108 = "neura.not"(%107) {dfg_id = 118 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %109 = "neura.data_mov"(%104) {dfg_id = 99 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 163 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 163 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 163 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %109 = "neura.data_mov"(%104) {dfg_id = 99 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}, {id = 169 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 169 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %110 = "neura.data_mov"(%108) {dfg_id = 123 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %111 = neura.grant_predicate %109, %110 {dfg_id = 128 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %111 -> %10 {dfg_id = 132 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 10 : i32}]} : !neura.data !neura.data @@ -155,101 +155,544 @@ // MAPPING-NEXT: %113 = "neura.data_mov"(%108) {dfg_id = 122 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %114 = neura.grant_predicate %112, %113 {dfg_id = 127 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %114 -> %7 {dfg_id = 131 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 10 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%106) {dfg_id = 112 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = "neura.data_mov"(%106) {dfg_id = 113 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 194 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%106) {dfg_id = 112 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = "neura.data_mov"(%106) {dfg_id = 113 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %117 = neura.grant_predicate %115, %116 {dfg_id = 117 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %118 = "neura.data_mov"(%117) {dfg_id = 121 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: neura.return_void %118 : !neura.data {dfg_id = 126 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 12 : i32} // MAPPING-NEXT: } +// MAPPING-NEXT: } -// YAML: - column: 0 -// YAML: row: 0 -// YAML: core_id: "0" -// YAML: entries: -// YAML: - entry_id: "entry0" -// YAML: instructions: -// YAML: - index_per_ii: 5 -// YAML: operations: -// YAML: - opcode: "GEP" -// YAML: id: 46 -// YAML: time_step: 5 -// YAML: invalid_iterations: 0 -// YAML: src_operands: -// YAML: - operand: "arg1" -// YAML: color: "RED" -// YAML: - operand: "$0" -// YAML: color: "RED" -// YAML: dst_operands: -// YAML: - operand: "EAST" -// YAML: color: "RED" -// YAML: - index_per_ii: 6 -// YAML: operations: -// YAML: - opcode: "GEP" -// YAML: id: 47 -// YAML: time_step: 6 -// YAML: invalid_iterations: 0 -// YAML: src_operands: -// YAML: - operand: "arg3" -// YAML: color: "RED" -// YAML: - operand: "$1" -// YAML: color: "RED" -// YAML: dst_operands: -// YAML: - operand: "EAST" -// YAML: color: "RED" -// YAML: - operand: "NORTH" -// YAML: color: "RED" -// YAML: - column: 0 -// YAML: row: 2 -// YAML: core_id: "8" -// YAML: entries: -// YAML: - entry_id: "entry0" -// YAML: instructions: -// YAML: - index_per_ii: 4 -// YAML: operations: -// YAML: - opcode: "GEP" -// YAML: id: 31 -// YAML: time_step: 4 -// YAML: invalid_iterations: 0 -// YAML: src_operands: -// YAML: - operand: "arg2" -// YAML: color: "RED" -// YAML: - operand: "$0" -// YAML: color: "RED" -// YAML: dst_operands: -// YAML: - operand: "EAST" -// YAML: color: "RED" -// YAML: - index_per_ii: 5 -// YAML: operations: -// YAML: - opcode: "GEP" -// YAML: id: 32 -// YAML: time_step: 5 -// YAML: invalid_iterations: 0 -// YAML: src_operands: -// YAML: - operand: "arg4" -// YAML: color: "RED" -// YAML: - operand: "$1" -// YAML: color: "RED" -// YAML: dst_operands: -// YAML: - operand: "NORTH" -// YAML: color: "RED" -// YAML: - operand: "$0" -// YAML: color: "RED" +// YAML: array_config: +// YAML-NEXT: columns: 4 +// YAML-NEXT: rows: 4 +// YAML-NEXT: compiled_ii: 10 +// YAML-NEXT: cores: +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "0" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 3 +// YAML-NEXT: time_step: 0 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 19 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 34 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 35 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 46 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 400001 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 6 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 47 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg3" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 7 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 28 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 720001 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 84 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 8 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 730001 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 92 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 1310001 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 130 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 69 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 6 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 64 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 7 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 65 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 8 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 78 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 55 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 127 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "4" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 102 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$24" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 20 + +// ASM: # Compiled II: 10 // ASM: PE(0,0): -// ASM: { -// ASM: GEP, [arg1], [$0] -> [EAST, RED] (t=5, inv_iters=0) -// ASM: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=5, inv_iters=0) -// ASM: } (idx_per_ii=5) -// ASM: { -// ASM: GEP, [arg3], [$1] -> [EAST, RED], [NORTH, RED] (t=6, inv_iters=0) -// ASM: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0] -> [$0], [NORTH, RED] (t=0, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$8], [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg1], [$0] -> [EAST, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg3], [$1] -> [EAST, RED], [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$8], [$16] -> [$0], [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$16] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [WEST, RED] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: STORE, [NORTH, RED], [$0] (t=11, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [WEST, RED] -> [WEST, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [WEST, RED] -> [WEST, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$0] -> [EAST, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [NORTH, RED] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(0,1): +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$24] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [EAST, RED] -> [$0], [NORTH, RED], [EAST, RED], [$8] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$16] -> [$9], [$16], [SOUTH, RED], [$0] (t=2, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED], [$0] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$16] -> [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$8], [$24] -> [SOUTH, RED], [$0] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [EAST, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: GEP, [NORTH, RED], [$9] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$0] -> [NORTH, RED], [$0] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: MUL, [SOUTH, RED], [$0] -> [NORTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: ADD, [SOUTH, RED], [NORTH, RED] -> [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$9], [$0] -> [WEST, RED] (t=10, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: SHL, [WEST, RED], [#5] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg0], [$0] -> [NORTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [WEST, RED], [SOUTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$8], [EAST, RED], [$24], [NORTH, RED], [$16], [WEST, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: ADD, [WEST, RED], [#1] -> [EAST, RED], [$9] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$24] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(2,1): +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [$0] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [$8], [$16] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [WEST, RED], [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(3,1): +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [arg3] -> [NORTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) // ASM: PE(0,2): -// ASM: { -// ASM: GEP, [arg2], [$0] -> [EAST, RED] (t=4, inv_iters=0) -// ASM: } (idx_per_ii=4) -// ASM: { -// ASM: GEP, [arg4], [$1] -> [NORTH, RED], [$0] (t=5, inv_iters=0) -// ASM: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=0) -// ASM: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [$8] (t=10, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg2], [$0] -> [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg4], [$1] -> [NORTH, RED], [$0] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$8] -> [NORTH, RED], [$8], [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$0] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: MUL, [$0], [SOUTH, RED] -> [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [SOUTH, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(1,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$16], [$9] -> [$0] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$24], [$10] -> [$1] (t=11, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [WEST, RED], [$24] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [WEST, RED], [$16] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$9] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$10] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(3,2): +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [#0] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: MEMSET, [SOUTH, RED], [$0], [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(0,3): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [SOUTH, RED] -> [SOUTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: STORE, [#0], [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(3,3): +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [#32] -> [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) diff --git a/test/e2e/bicg/bicg_kernel.mlir b/test/e2e/bicg/bicg_kernel.mlir index 100b710e..bc6b818c 100644 --- a/test/e2e/bicg/bicg_kernel.mlir +++ b/test/e2e/bicg/bicg_kernel.mlir @@ -46,65 +46,68 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// BEFORE_CANONICALIZE: module attributes -// BEFORE_CANONICALIZE: func.func @kernel -// BEFORE_CANONICALIZE: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 -// BEFORE_CANONICALIZE: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 -// BEFORE_CANONICALIZE: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr -// BEFORE_CANONICALIZE: %3 = "neura.constant"() <{value = "%arg4"}> : () -> !llvm.ptr -// BEFORE_CANONICALIZE: %4 = "neura.constant"() <{value = 0 : i8}> : () -> i8 -// BEFORE_CANONICALIZE: %5 = "neura.constant"() <{value = 0 : i64}> : () -> i64 -// BEFORE_CANONICALIZE: %6 = "neura.icmp"(%0) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 -// BEFORE_CANONICALIZE: neura.cond_br %6 : i1 then to ^bb1 else to ^bb2 -// BEFORE_CANONICALIZE: ^bb1: // pred: ^bb0 -// BEFORE_CANONICALIZE: %7 = neura.zext %0 : i32 -> i64 -// BEFORE_CANONICALIZE: %8 = "neura.shl"(%7) {rhs_value = 3 : i64} : (i64) -> i64 -// BEFORE_CANONICALIZE: "neura.memset"(%2, %4, %8) <{is_volatile = false}> : (!llvm.ptr, i8, i64) -> () -// BEFORE_CANONICALIZE: %9 = "neura.icmp"(%1) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 -// BEFORE_CANONICALIZE: neura.cond_br %9 : i1 then to ^bb4 else to ^bb8 -// BEFORE_CANONICALIZE: ^bb2: // pred: ^bb0 -// BEFORE_CANONICALIZE: %10 = "neura.icmp"(%1) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 -// BEFORE_CANONICALIZE: neura.cond_br %10 : i1 then to ^bb3 else to ^bb8 -// BEFORE_CANONICALIZE: ^bb3: // pred: ^bb2 -// BEFORE_CANONICALIZE: %11 = neura.zext %1 : i32 -> i64 -// BEFORE_CANONICALIZE: %12 = "neura.shl"(%11) {rhs_value = 3 : i64} : (i64) -> i64 -// BEFORE_CANONICALIZE: "neura.memset"(%3, %4, %12) <{is_volatile = false}> : (!llvm.ptr, i8, i64) -> () -// BEFORE_CANONICALIZE: neura.br to ^bb8 -// BEFORE_CANONICALIZE: ^bb4: // pred: ^bb1 -// BEFORE_CANONICALIZE: %13 = neura.zext %1 : i32 -> i64 -// BEFORE_CANONICALIZE: %14 = neura.zext %0 : i32 -> i64 -// BEFORE_CANONICALIZE: neura.br %5 : i64 to ^bb5 -// BEFORE_CANONICALIZE: ^bb5(%15: i64): // 2 preds: ^bb4, ^bb7 -// BEFORE_CANONICALIZE: %16 = "neura.gep"(%15) <{operandSegmentSizes = array}> {lhs_value = "%arg4"} : (i64) -> !llvm.ptr -// BEFORE_CANONICALIZE: "neura.store"(%16) {lhs_value = 0.000000e+00 : f64} : (!llvm.ptr) -> () -// BEFORE_CANONICALIZE: %17 = "neura.gep"(%15) <{operandSegmentSizes = array}> {lhs_value = "%arg6"} : (i64) -> !llvm.ptr -// BEFORE_CANONICALIZE: neura.br %5 : i64 to ^bb6 -// BEFORE_CANONICALIZE: ^bb6(%18: i64): // 2 preds: ^bb5, ^bb6 -// BEFORE_CANONICALIZE: %19 = "neura.gep"(%18) <{operandSegmentSizes = array}> {lhs_value = "%arg3"} : (i64) -> !llvm.ptr -// BEFORE_CANONICALIZE: %20 = "neura.load"(%19) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE: %21 = "neura.load"(%17) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE: %22 = "neura.gep"(%15, %18) <{operandSegmentSizes = array}> {lhs_value = "%arg2"} : (i64, i64) -> !llvm.ptr -// BEFORE_CANONICALIZE: %23 = "neura.load"(%22) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE: %24 = "neura.fmul_fadd"(%21, %23, %20) : (f64, f64, f64) -> f64 -// BEFORE_CANONICALIZE: "neura.store"(%24, %19) : (f64, !llvm.ptr) -> () -// BEFORE_CANONICALIZE: %25 = "neura.load"(%16) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE: %26 = "neura.load"(%22) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE: %27 = "neura.gep"(%18) <{operandSegmentSizes = array}> {lhs_value = "%arg5"} : (i64) -> !llvm.ptr -// BEFORE_CANONICALIZE: %28 = "neura.load"(%27) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE: %29 = "neura.fmul_fadd"(%26, %28, %25) : (f64, f64, f64) -> f64 -// BEFORE_CANONICALIZE: "neura.store"(%29, %16) : (f64, !llvm.ptr) -> () -// BEFORE_CANONICALIZE: %30 = "neura.add"(%18) {rhs_value = 1 : i64} : (i64) -> i64 -// BEFORE_CANONICALIZE: %31 = "neura.icmp"(%30, %14) <{cmpType = "eq"}> : (i64, i64) -> i1 -// BEFORE_CANONICALIZE: neura.cond_br %31 : i1 then to ^bb7 else %30 : i64 to ^bb6 -// BEFORE_CANONICALIZE: ^bb7: // pred: ^bb6 -// BEFORE_CANONICALIZE: %32 = "neura.add"(%15) {rhs_value = 1 : i64} : (i64) -> i64 -// BEFORE_CANONICALIZE: %33 = "neura.icmp"(%32, %13) <{cmpType = "eq"}> : (i64, i64) -> i1 -// BEFORE_CANONICALIZE: neura.cond_br %33 : i1 then to ^bb8 else %32 : i64 to ^bb5 -// BEFORE_CANONICALIZE: ^bb8: // 4 preds: ^bb1, ^bb2, ^bb3, ^bb7 -// BEFORE_CANONICALIZE: "neura.return"() : () -> () +// BEFORE_CANONICALIZE: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, f80 = dense<128> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, i64 = dense<64> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// BEFORE_CANONICALIZE-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// BEFORE_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 +// BEFORE_CANONICALIZE-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 +// BEFORE_CANONICALIZE-NEXT: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: %3 = "neura.constant"() <{value = "%arg4"}> : () -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: %4 = "neura.constant"() <{value = 0 : i8}> : () -> i8 +// BEFORE_CANONICALIZE-NEXT: %5 = "neura.constant"() <{value = 0 : i64}> : () -> i64 +// BEFORE_CANONICALIZE-NEXT: %6 = "neura.icmp"(%0) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 +// BEFORE_CANONICALIZE-NEXT: neura.cond_br %6 : i1 then to ^bb1 else to ^bb2 +// BEFORE_CANONICALIZE-NEXT: ^bb1: // pred: ^bb0 +// BEFORE_CANONICALIZE-NEXT: %7 = neura.zext %0 : i32 -> i64 +// BEFORE_CANONICALIZE-NEXT: %8 = "neura.shl"(%7) {rhs_value = 3 : i64} : (i64) -> i64 +// BEFORE_CANONICALIZE-NEXT: "neura.memset"(%2, %4, %8) <{is_volatile = false}> : (!llvm.ptr, i8, i64) -> () +// BEFORE_CANONICALIZE-NEXT: %9 = "neura.icmp"(%1) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 +// BEFORE_CANONICALIZE-NEXT: neura.cond_br %9 : i1 then to ^bb4 else to ^bb8 +// BEFORE_CANONICALIZE-NEXT: ^bb2: // pred: ^bb0 +// BEFORE_CANONICALIZE-NEXT: %10 = "neura.icmp"(%1) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 +// BEFORE_CANONICALIZE-NEXT: neura.cond_br %10 : i1 then to ^bb3 else to ^bb8 +// BEFORE_CANONICALIZE-NEXT: ^bb3: // pred: ^bb2 +// BEFORE_CANONICALIZE-NEXT: %11 = neura.zext %1 : i32 -> i64 +// BEFORE_CANONICALIZE-NEXT: %12 = "neura.shl"(%11) {rhs_value = 3 : i64} : (i64) -> i64 +// BEFORE_CANONICALIZE-NEXT: "neura.memset"(%3, %4, %12) <{is_volatile = false}> : (!llvm.ptr, i8, i64) -> () +// BEFORE_CANONICALIZE-NEXT: neura.br to ^bb8 +// BEFORE_CANONICALIZE-NEXT: ^bb4: // pred: ^bb1 +// BEFORE_CANONICALIZE-NEXT: %13 = neura.zext %1 : i32 -> i64 +// BEFORE_CANONICALIZE-NEXT: %14 = neura.zext %0 : i32 -> i64 +// BEFORE_CANONICALIZE-NEXT: neura.br %5 : i64 to ^bb5 +// BEFORE_CANONICALIZE-NEXT: ^bb5(%15: i64): // 2 preds: ^bb4, ^bb7 +// BEFORE_CANONICALIZE-NEXT: %16 = "neura.gep"(%15) <{operandSegmentSizes = array}> {lhs_value = "%arg4"} : (i64) -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: "neura.store"(%16) {lhs_value = 0.000000e+00 : f64} : (!llvm.ptr) -> () +// BEFORE_CANONICALIZE-NEXT: %17 = "neura.gep"(%15) <{operandSegmentSizes = array}> {lhs_value = "%arg6"} : (i64) -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: neura.br %5 : i64 to ^bb6 +// BEFORE_CANONICALIZE-NEXT: ^bb6(%18: i64): // 2 preds: ^bb5, ^bb6 +// BEFORE_CANONICALIZE-NEXT: %19 = "neura.gep"(%18) <{operandSegmentSizes = array}> {lhs_value = "%arg3"} : (i64) -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: %20 = "neura.load"(%19) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE-NEXT: %21 = "neura.load"(%17) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE-NEXT: %22 = "neura.gep"(%15, %18) <{operandSegmentSizes = array}> {lhs_value = "%arg2"} : (i64, i64) -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: %23 = "neura.load"(%22) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE-NEXT: %24 = "neura.fmul_fadd"(%21, %23, %20) : (f64, f64, f64) -> f64 +// BEFORE_CANONICALIZE-NEXT: "neura.store"(%24, %19) : (f64, !llvm.ptr) -> () +// BEFORE_CANONICALIZE-NEXT: %25 = "neura.load"(%16) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE-NEXT: %26 = "neura.load"(%22) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE-NEXT: %27 = "neura.gep"(%18) <{operandSegmentSizes = array}> {lhs_value = "%arg5"} : (i64) -> !llvm.ptr +// BEFORE_CANONICALIZE-NEXT: %28 = "neura.load"(%27) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE-NEXT: %29 = "neura.fmul_fadd"(%26, %28, %25) : (f64, f64, f64) -> f64 +// BEFORE_CANONICALIZE-NEXT: "neura.store"(%29, %16) : (f64, !llvm.ptr) -> () +// BEFORE_CANONICALIZE-NEXT: %30 = "neura.add"(%18) {rhs_value = 1 : i64} : (i64) -> i64 +// BEFORE_CANONICALIZE-NEXT: %31 = "neura.icmp"(%30, %14) <{cmpType = "eq"}> : (i64, i64) -> i1 +// BEFORE_CANONICALIZE-NEXT: neura.cond_br %31 : i1 then to ^bb7 else %30 : i64 to ^bb6 +// BEFORE_CANONICALIZE-NEXT: ^bb7: // pred: ^bb6 +// BEFORE_CANONICALIZE-NEXT: %32 = "neura.add"(%15) {rhs_value = 1 : i64} : (i64) -> i64 +// BEFORE_CANONICALIZE-NEXT: %33 = "neura.icmp"(%32, %13) <{cmpType = "eq"}> : (i64, i64) -> i1 +// BEFORE_CANONICALIZE-NEXT: neura.cond_br %33 : i1 then to ^bb8 else %32 : i64 to ^bb5 +// BEFORE_CANONICALIZE-NEXT: ^bb8: // 4 preds: ^bb1, ^bb2, ^bb3, ^bb7 +// BEFORE_CANONICALIZE-NEXT: "neura.return"() : () -> () +// BEFORE_CANONICALIZE-NEXT: } +// BEFORE_CANONICALIZE-NEXT: } -// AFTER_CANONICALIZE: func.func @kernel -// AFTER_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 +// AFTER_CANONICALIZE: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f64 = dense<64> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, "dlti.endianness" = "little", "dlti.stack_alignment" = 128 : i64>, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { +// AFTER_CANONICALIZE-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// AFTER_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 // AFTER_CANONICALIZE-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 // AFTER_CANONICALIZE-NEXT: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr // AFTER_CANONICALIZE-NEXT: %3 = "neura.constant"() <{value = "%arg4"}> : () -> !llvm.ptr @@ -158,9 +161,11 @@ // AFTER_CANONICALIZE-NEXT: neura.cond_br %60 : i1 then to ^bb8 else %59, %57, %58, %56 : i64, i64, i64, i64 to ^bb5 // AFTER_CANONICALIZE-NEXT: ^bb8: // 4 preds: ^bb1, ^bb2, ^bb3, ^bb7 // AFTER_CANONICALIZE-NEXT: "neura.return"() : () -> () +// AFTER_CANONICALIZE-NEXT: } +// AFTER_CANONICALIZE-NEXT: } -// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 12 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 12 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = "%arg1"}> {dfg_id = 2 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data @@ -173,13 +178,13 @@ // MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 29 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 30 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 19 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 36 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 36 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 42 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %14 = "neura.data_mov"(%3) {dfg_id = 23 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 35 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 163 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 163 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 163 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 163 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 163 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 163 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 163 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 163 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 163 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 35 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 176 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 176 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 176 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 176 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 176 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 41 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%5) {dfg_id = 25 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.data_mov"(%10) {dfg_id = 34 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 2 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 24 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 290 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 290 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 290 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 290 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 290 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 290 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%5) {dfg_id = 25 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.data_mov"(%10) {dfg_id = 34 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 24 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 304 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 304 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 304 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 304 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 304 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 304 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 304 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %19 = neura.grant_predicate %17, %18 {dfg_id = 40 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %20 = "neura.data_mov"(%2) {dfg_id = 21 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %21 = "neura.data_mov"(%10) {dfg_id = 33 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data @@ -187,56 +192,56 @@ // MAPPING-NEXT: %23 = "neura.data_mov"(%6) {dfg_id = 27 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 29 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %24 = "neura.data_mov"(%10) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %25 = neura.grant_predicate %23, %24 {dfg_id = 38 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%10) {dfg_id = 31 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%10) {dfg_id = 31 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 37 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%2) {dfg_id = 22 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%2) {dfg_id = 22 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 1008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 45 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 55 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 24 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 44 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 26 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 54 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %34 = "neura.data_mov"(%5) {dfg_id = 26 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.data_mov"(%27) {dfg_id = 43 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 8001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.data_mov"(%27) {dfg_id = 43 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 53 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %37 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %38 = "neura.icmp"(%37) <{cmpType = "sgt"}> {dfg_id = 67 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data // MAPPING-NEXT: %39 = "neura.data_mov"(%38) {dfg_id = 76 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %40 = "neura.not"(%39) {dfg_id = 87 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %41 = "neura.data_mov"(%40) {dfg_id = 97 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %42 = "neura.data_mov"(%40) {dfg_id = 98 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %42 = "neura.data_mov"(%40) {dfg_id = 98 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %43 = neura.grant_predicate %41, %42 {dfg_id = 108 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %44 = "neura.data_mov"(%30) {dfg_id = 60 : i32, mapping_locs = [{id = 1001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %44 = "neura.data_mov"(%30) {dfg_id = 60 : i32, mapping_locs = [{id = 1008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %45 = "neura.data_mov"(%38) {dfg_id = 75 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %46 = neura.grant_predicate %44, %45 {dfg_id = 86 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %47 = "neura.data_mov"(%33) {dfg_id = 59 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 12000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %48 = "neura.data_mov"(%38) {dfg_id = 74 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 26 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %49 = neura.grant_predicate %47, %48 {dfg_id = 85 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %50 = "neura.data_mov"(%36) {dfg_id = 58 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %51 = "neura.data_mov"(%38) {dfg_id = 73 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 290 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %51 = "neura.data_mov"(%38) {dfg_id = 73 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %52 = neura.grant_predicate %50, %51 {dfg_id = 84 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %53 = "neura.data_mov"(%46) {dfg_id = 96 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %54 = neura.zext %53 {dfg_id = 107 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data // MAPPING-NEXT: %55 = "neura.data_mov"(%54) {dfg_id = 116 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %56 = "neura.shl"(%55) {dfg_id = 132 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %57 = "neura.data_mov"(%49) {dfg_id = 95 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 42 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 289 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%52) {dfg_id = 94 : i32, mapping_locs = [{id = 290 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 290 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 290 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %59 = "neura.data_mov"(%56) {dfg_id = 143 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 291 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %57 = "neura.data_mov"(%49) {dfg_id = 95 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 42 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%52) {dfg_id = 94 : i32, mapping_locs = [{id = 304 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 304 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 304 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %59 = "neura.data_mov"(%56) {dfg_id = 143 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 305 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: "neura.memset"(%57, %58, %59) <{is_volatile = false}> {dfg_id = 162 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () // MAPPING-NEXT: %60 = "neura.data_mov"(%56) {dfg_id = 142 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: neura.return_void %60 : !neura.data {dfg_id = 161 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 0 : i32}]} -// MAPPING-NEXT: %61 = "neura.data_mov"(%13) {dfg_id = 52 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %61 = "neura.data_mov"(%13) {dfg_id = 52 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %62 = neura.zext %61 {dfg_id = 57 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %63 = "neura.data_mov"(%62) {dfg_id = 66 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %63 = "neura.data_mov"(%62) {dfg_id = 66 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 4016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 4016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 4016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %64 = "neura.shl"(%63) {dfg_id = 72 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %65 = "neura.data_mov"(%16) {dfg_id = 50 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%19) {dfg_id = 49 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.data_mov"(%64) {dfg_id = 83 : i32, mapping_locs = [{id = 4003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%19) {dfg_id = 49 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.data_mov"(%64) {dfg_id = 83 : i32, mapping_locs = [{id = 4009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: "neura.memset"(%65, %66, %67) <{is_volatile = false}> {dfg_id = 93 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () // MAPPING-NEXT: %68 = "neura.data_mov"(%22) {dfg_id = 48 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %69 = "neura.icmp"(%68) <{cmpType = "sgt"}> {dfg_id = 56 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 65 : i32, mapping_locs = [{id = 2002 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 1002 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 1002 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 1002 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 1002 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 1002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 65 : i32, mapping_locs = [{id = 2009 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 1009 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 1009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 1009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 1009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 1009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %71 = "neura.not"(%70) {dfg_id = 71 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.data_mov"(%22) {dfg_id = 47 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 2001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 2001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.data_mov"(%22) {dfg_id = 47 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 2008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %73 = "neura.data_mov"(%69) {dfg_id = 64 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %74 = neura.grant_predicate %72, %73 {dfg_id = 70 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %75 = "neura.data_mov"(%13) {dfg_id = 51 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data @@ -245,8 +250,8 @@ // MAPPING-NEXT: %78 = "neura.data_mov"(%25) {dfg_id = 46 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %79 = "neura.data_mov"(%69) {dfg_id = 62 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %80 = neura.grant_predicate %78, %79 {dfg_id = 68 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%71) {dfg_id = 81 : i32, mapping_locs = [{id = 1002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 1002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.data_mov"(%71) {dfg_id = 82 : i32, mapping_locs = [{id = 1003 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 1003 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%71) {dfg_id = 81 : i32, mapping_locs = [{id = 1001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.data_mov"(%71) {dfg_id = 82 : i32, mapping_locs = [{id = 1009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 1009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %83 = neura.grant_predicate %81, %82 {dfg_id = 92 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %84 = "neura.data_mov"(%74) {dfg_id = 80 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %85 = neura.zext %84 {dfg_id = 91 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data -> !neura.data @@ -264,14 +269,14 @@ // MAPPING-NEXT: %97 = neura.reserve {dfg_id = 10 : i32} : !neura.data // MAPPING-NEXT: %98 = "neura.data_mov"(%80) {dfg_id = 77 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %99 = neura.phi_start %98, %97 {dfg_id = 88 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 101 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 321 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 321 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 101 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 328 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 328 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 111 : i32, lhs_value = "%arg4", mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 123 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 449 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 43 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 40 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 123 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 456 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 43 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 40 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: "neura.store"(%102) {dfg_id = 135 : i32, lhs_value = 0.000000e+00 : f64, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> () // MAPPING-NEXT: %103 = "neura.data_mov"(%99) {dfg_id = 100 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 448 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 448 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %104 = "neura.gep"(%103) <{operandSegmentSizes = array}> {dfg_id = 110 : i32, lhs_value = "%arg6", mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %105 = neura.reserve {dfg_id = 11 : i32} : !neura.data -// MAPPING-NEXT: %106 = "neura.data_mov"(%96) {dfg_id = 103 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 195 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 195 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 195 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 195 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 195 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %106 = "neura.data_mov"(%96) {dfg_id = 103 : i32, mapping_locs = [{id = 216 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 216 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 216 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 216 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 216 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 216 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %107 = neura.phi_start %106, %105 {dfg_id = 113 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %108 = neura.reserve {dfg_id = 12 : i32} : !neura.data // MAPPING-NEXT: %109 = "neura.data_mov"(%90) {dfg_id = 131 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data @@ -291,7 +296,7 @@ // MAPPING-NEXT: %123 = neura.reserve {dfg_id = 17 : i32} : !neura.data // MAPPING-NEXT: %124 = "neura.data_mov"(%96) {dfg_id = 102 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %125 = neura.phi_start %124, %123 {dfg_id = 112 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 127 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 18 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 224 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 127 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 18 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 224 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %127 = "neura.gep"(%126) <{operandSegmentSizes = array}> {dfg_id = 139 : i32, lhs_value = "%arg3", mapping_locs = [{id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %128 = "neura.data_mov"(%127) {dfg_id = 155 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %129 = "neura.load"(%128) {dfg_id = 168 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data @@ -300,7 +305,7 @@ // MAPPING-NEXT: %132 = "neura.data_mov"(%119) {dfg_id = 120 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 352 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 352 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %133 = "neura.data_mov"(%125) {dfg_id = 126 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 23 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 353 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %134 = "neura.gep"(%132, %133) <{operandSegmentSizes = array}> {dfg_id = 138 : i32, lhs_value = "%arg2", mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %135 = "neura.data_mov"(%134) {dfg_id = 153 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 22 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 3001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 3001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %135 = "neura.data_mov"(%134) {dfg_id = 153 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 22 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 3008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 3008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %136 = "neura.load"(%135) {dfg_id = 167 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %137 = "neura.data_mov"(%131) {dfg_id = 170 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 41 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 44 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 47 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %138 = "neura.data_mov"(%136) {dfg_id = 174 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 23 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data @@ -318,47 +323,47 @@ // MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 151 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 165 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %151 = "neura.data_mov"(%146) {dfg_id = 173 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %152 = "neura.data_mov"(%150) {dfg_id = 172 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 8001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %153 = "neura.data_mov"(%144) {dfg_id = 171 : i32, mapping_locs = [{id = 8002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 8002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %152 = "neura.data_mov"(%150) {dfg_id = 172 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %153 = "neura.data_mov"(%144) {dfg_id = 171 : i32, mapping_locs = [{id = 8016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 8016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %154 = "neura.fmul_fadd"(%151, %152, %153) {dfg_id = 181 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %155 = "neura.data_mov"(%154) {dfg_id = 188 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %156 = "neura.data_mov"(%116) {dfg_id = 147 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 8003 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 8003 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 8003 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %156 = "neura.data_mov"(%116) {dfg_id = 147 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 8024 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 8024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 8024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: "neura.store"(%155, %156) {dfg_id = 202 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %157 = "neura.data_mov"(%125) {dfg_id = 124 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %158 = "neura.add"(%157) {dfg_id = 136 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %159 = "neura.data_mov"(%158) {dfg_id = 150 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %160 = "neura.data_mov"(%113) {dfg_id = 158 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %160 = "neura.data_mov"(%113) {dfg_id = 158 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 200 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %161 = "neura.icmp"(%159, %160) <{cmpType = "eq"}> {dfg_id = 169 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %162 = "neura.data_mov"(%161) {dfg_id = 180 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %163 = "neura.not"(%162) {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %164 = "neura.data_mov"(%158) {dfg_id = 149 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 194 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 194 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %164 = "neura.data_mov"(%158) {dfg_id = 149 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 208 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 208 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %165 = "neura.data_mov"(%163) {dfg_id = 201 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %166 = neura.grant_predicate %164, %165 {dfg_id = 211 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %166 -> %123 {dfg_id = 220 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %167 = "neura.data_mov"(%122) {dfg_id = 144 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 448 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 448 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 448 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 448 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %168 = "neura.data_mov"(%163) {dfg_id = 200 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 17 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 28 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 34 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %169 = neura.grant_predicate %167, %168 {dfg_id = 210 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %169 -> %120 {dfg_id = 219 : i32, mapping_locs = [{id = 449 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 449 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 449 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 449 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 449 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 449 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 449 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %170 = "neura.data_mov"(%119) {dfg_id = 119 : i32, mapping_locs = [{id = 325 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 9 : i32}, {id = 325 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 10 : i32}, {id = 325 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 11 : i32}, {id = 325 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 12 : i32}, {id = 325 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 13 : i32}, {id = 325 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 14 : i32}, {id = 325 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 15 : i32}, {id = 325 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 16 : i32}, {id = 325 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 17 : i32}, {id = 325 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %171 = "neura.data_mov"(%163) {dfg_id = 199 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 21 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 326 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 15 : i32}, {id = 326 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 16 : i32}, {id = 326 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 17 : i32}, {id = 326 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %172 = neura.grant_predicate %170, %171 {dfg_id = 209 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %172 -> %117 {dfg_id = 218 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 322 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %173 = "neura.data_mov"(%116) {dfg_id = 146 : i32, mapping_locs = [{id = 291 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 291 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 291 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 291 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 291 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %174 = "neura.data_mov"(%163) {dfg_id = 198 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %166 -> %123 {dfg_id = 220 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %167 = "neura.data_mov"(%122) {dfg_id = 144 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 448 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 448 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 448 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %168 = "neura.data_mov"(%163) {dfg_id = 200 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 34 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %169 = neura.grant_predicate %167, %168 {dfg_id = 210 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %169 -> %120 {dfg_id = 219 : i32, mapping_locs = [{id = 456 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 456 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 456 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 456 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 456 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 456 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 456 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 456 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %170 = "neura.data_mov"(%119) {dfg_id = 119 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 32 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 360 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 360 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 360 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 360 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 360 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %171 = "neura.data_mov"(%163) {dfg_id = 199 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 23 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %172 = neura.grant_predicate %170, %171 {dfg_id = 209 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %172 -> %117 {dfg_id = 218 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 337 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}, {id = 337 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 337 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 337 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %173 = "neura.data_mov"(%116) {dfg_id = 146 : i32, mapping_locs = [{id = 305 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 305 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 305 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 305 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 305 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %174 = "neura.data_mov"(%163) {dfg_id = 198 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %175 = neura.grant_predicate %173, %174 {dfg_id = 208 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %175 -> %114 {dfg_id = 217 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %176 = "neura.data_mov"(%113) {dfg_id = 157 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %176 = "neura.data_mov"(%113) {dfg_id = 157 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %177 = "neura.data_mov"(%163) {dfg_id = 197 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %178 = neura.grant_predicate %176, %177 {dfg_id = 207 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %178 -> %111 {dfg_id = 216 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %179 = "neura.data_mov"(%110) {dfg_id = 160 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 199 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 11 : i32}, {id = 199 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 12 : i32}, {id = 199 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 13 : i32}, {id = 199 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 14 : i32}, {id = 199 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 15 : i32}, {id = 199 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 16 : i32}, {id = 199 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %180 = "neura.data_mov"(%163) {dfg_id = 196 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %181 = neura.grant_predicate %179, %180 {dfg_id = 206 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %181 -> %108 {dfg_id = 215 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 2001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 2001 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %182 = "neura.data_mov"(%107) {dfg_id = 129 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 195 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 195 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %183 = "neura.data_mov"(%163) {dfg_id = 195 : i32, mapping_locs = [{id = 197 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 12 : i32}, {id = 197 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 13 : i32}, {id = 197 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 14 : i32}, {id = 197 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 15 : i32}, {id = 197 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %184 = neura.grant_predicate %182, %183 {dfg_id = 205 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %184 -> %105 {dfg_id = 214 : i32, mapping_locs = [{id = 198 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 17 : i32}, {id = 198 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 18 : i32}, {id = 198 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 19 : i32}, {id = 198 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 20 : i32}, {id = 198 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 21 : i32}, {id = 198 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 22 : i32}, {id = 198 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 23 : i32}, {id = 198 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 24 : i32}, {id = 198 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %178 -> %111 {dfg_id = 216 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %179 = "neura.data_mov"(%110) {dfg_id = 160 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 218 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 11 : i32}, {id = 218 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 12 : i32}, {id = 218 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 13 : i32}, {id = 218 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 14 : i32}, {id = 218 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 15 : i32}, {id = 218 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %180 = "neura.data_mov"(%163) {dfg_id = 196 : i32, mapping_locs = [{id = 210 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 12 : i32}, {id = 210 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 13 : i32}, {id = 210 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 14 : i32}, {id = 210 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 15 : i32}, {id = 210 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %181 = neura.grant_predicate %179, %180 {dfg_id = 206 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %181 -> %108 {dfg_id = 215 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 2017 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 2017 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 2017 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 2017 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %182 = "neura.data_mov"(%107) {dfg_id = 129 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %183 = "neura.data_mov"(%163) {dfg_id = 195 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 224 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %184 = neura.grant_predicate %182, %183 {dfg_id = 205 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %184 -> %105 {dfg_id = 214 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 217 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 21 : i32}, {id = 217 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 22 : i32}, {id = 217 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 23 : i32}, {id = 217 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 24 : i32}, {id = 217 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %185 = "neura.data_mov"(%119) {dfg_id = 118 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %186 = "neura.data_mov"(%161) {dfg_id = 179 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %187 = neura.grant_predicate %185, %186 {dfg_id = 186 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data @@ -366,7 +371,7 @@ // MAPPING-NEXT: %189 = "neura.data_mov"(%161) {dfg_id = 178 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %190 = neura.grant_predicate %188, %189 {dfg_id = 185 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %191 = "neura.data_mov"(%107) {dfg_id = 128 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %192 = "neura.data_mov"(%161) {dfg_id = 177 : i32, mapping_locs = [{id = 196 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 196 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 196 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 196 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %192 = "neura.data_mov"(%161) {dfg_id = 177 : i32, mapping_locs = [{id = 209 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 11 : i32}, {id = 209 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 209 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 209 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %193 = neura.grant_predicate %191, %192 {dfg_id = 184 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %194 = "neura.data_mov"(%113) {dfg_id = 156 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %195 = "neura.data_mov"(%161) {dfg_id = 176 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data @@ -378,87 +383,565 @@ // MAPPING-NEXT: %201 = "neura.icmp"(%199, %200) <{cmpType = "eq"}> {dfg_id = 221 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %202 = "neura.data_mov"(%201) {dfg_id = 224 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %203 = "neura.not"(%202) {dfg_id = 226 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %204 = "neura.data_mov"(%198) {dfg_id = 212 : i32, mapping_locs = [{id = 323 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 323 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 323 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 323 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %204 = "neura.data_mov"(%198) {dfg_id = 212 : i32, mapping_locs = [{id = 344 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 344 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 344 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 344 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %205 = "neura.data_mov"(%203) {dfg_id = 231 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %206 = neura.grant_predicate %204, %205 {dfg_id = 236 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %206 -> %97 {dfg_id = 241 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %207 = "neura.data_mov"(%193) {dfg_id = 191 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %208 = "neura.data_mov"(%203) {dfg_id = 230 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 36 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = neura.grant_predicate %207, %208 {dfg_id = 235 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %209 -> %94 {dfg_id = 240 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 194 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 194 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %207 = "neura.data_mov"(%193) {dfg_id = 191 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %208 = "neura.data_mov"(%203) {dfg_id = 230 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = neura.grant_predicate %207, %208 {dfg_id = 235 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %209 -> %94 {dfg_id = 240 : i32, mapping_locs = [{id = 201 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 201 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %210 = "neura.data_mov"(%196) {dfg_id = 190 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %211 = "neura.data_mov"(%203) {dfg_id = 229 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %212 = neura.grant_predicate %210, %211 {dfg_id = 234 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %212 -> %91 {dfg_id = 239 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 162 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 162 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 162 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %213 = "neura.data_mov"(%190) {dfg_id = 192 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 194 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 194 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %212 -> %91 {dfg_id = 239 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 169 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 169 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 169 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %213 = "neura.data_mov"(%190) {dfg_id = 192 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 201 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 201 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %214 = "neura.data_mov"(%203) {dfg_id = 228 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %215 = neura.grant_predicate %213, %214 {dfg_id = 233 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %215 -> %88 {dfg_id = 238 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 2003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 2003 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 2003 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 2003 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %216 = "neura.data_mov"(%201) {dfg_id = 222 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %217 = "neura.data_mov"(%201) {dfg_id = 223 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 322 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %215 -> %88 {dfg_id = 238 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 2016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 2016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 2016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 2016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %216 = "neura.data_mov"(%201) {dfg_id = 222 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %217 = "neura.data_mov"(%201) {dfg_id = 223 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %218 = neura.grant_predicate %216, %217 {dfg_id = 225 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %219 = "neura.data_mov"(%83) {dfg_id = 106 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 20 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 321 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %220 = "neura.data_mov"(%43) {dfg_id = 117 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 20 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 322 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 322 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %221 = "neura.data_mov"(%218) {dfg_id = 227 : i32, mapping_locs = [{id = 324 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}, {id = 324 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %219 = "neura.data_mov"(%83) {dfg_id = 106 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 20 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %220 = "neura.data_mov"(%43) {dfg_id = 117 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 20 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 336 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 336 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %221 = "neura.data_mov"(%218) {dfg_id = 227 : i32, mapping_locs = [{id = 345 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 16 : i32}, {id = 345 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %222 = "neura.phi"(%219, %220, %221) {dfg_id = 232 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %223 = "neura.data_mov"(%222) {dfg_id = 237 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %223 : !neura.data {dfg_id = 242 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 2 : i32}]} +// MAPPING-NEXT: %223 = "neura.data_mov"(%222) {dfg_id = 237 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %223 : !neura.data {dfg_id = 242 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 2 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 18 : i32} // MAPPING-NEXT: } +// MAPPING-NEXT: } -// YAML: - column: 0 -// YAML: row: 1 -// YAML: core_id: "4" -// YAML: entries: -// YAML: - entry_id: "entry0" -// YAML: instructions: -// YAML: - index_per_ii: 0 -// YAML: operations: -// YAML: - opcode: "GEP" -// YAML: id: 137 -// YAML: time_step: 12 -// YAML: invalid_iterations: 1 -// YAML: src_operands: -// YAML: - operand: "arg5" -// YAML: color: "RED" -// YAML: - operand: "$0" -// YAML: color: "RED" -// YAML: dst_operands: -// YAML: - operand: "$0" -// YAML: color: "RED" -// YAML: - column: 3 -// YAML: row: 2 -// YAML: core_id: "11" -// YAML: entries: -// YAML: - entry_id: "entry0" -// YAML: instructions: -// YAML: - index_per_ii: 0 -// YAML: operations: -// YAML: - opcode: "GEP" -// YAML: id: 138 -// YAML: time_step: 12 -// YAML: invalid_iterations: 1 -// YAML: src_operands: -// YAML: - operand: "arg2" -// YAML: color: "RED" -// YAML: - operand: "$0" -// YAML: color: "RED" -// YAML: - operand: "$1" -// YAML: color: "RED" -// YAML: dst_operands: -// YAML: - operand: "SOUTH" -// YAML: color: "RED" -// YAML: - operand: "WEST" -// YAML: color: "RED" +// YAML: array_config: +// YAML-NEXT: columns: 4 +// YAML-NEXT: rows: 4 +// YAML-NEXT: compiled_ii: 10 +// YAML-NEXT: cores: +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "0" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 3 +// YAML-NEXT: time_step: 0 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 19 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 34 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 35 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 46 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 400001 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 6 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 47 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg3" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 7 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 28 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 720001 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 84 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 8 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 730001 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 92 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 1310001 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 130 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 69 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 6 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 64 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 7 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 65 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 8 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 78 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 55 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 127 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "4" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 102 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$24" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 20 +// ASM: # Compiled II: 10 +// ASM: PE(0,0): +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0] -> [$0], [NORTH, RED] (t=0, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$8], [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg1], [$0] -> [EAST, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg3], [$1] -> [EAST, RED], [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$8], [$16] -> [$0], [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$16] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [WEST, RED] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: STORE, [NORTH, RED], [$0] (t=11, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [WEST, RED] -> [WEST, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [WEST, RED] -> [WEST, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$0] -> [EAST, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [NORTH, RED] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) // ASM: PE(0,1): -// ASM: { -// ASM: GEP, [arg5], [$0] -> [$0] (t=12, inv_iters=1) -// ASM: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$24] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [EAST, RED] -> [$0], [NORTH, RED], [EAST, RED], [$8] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$16] -> [$9], [$16], [SOUTH, RED], [$0] (t=2, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED], [$0] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$16] -> [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$8], [$24] -> [SOUTH, RED], [$0] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [EAST, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: GEP, [NORTH, RED], [$9] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$0] -> [NORTH, RED], [$0] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: MUL, [SOUTH, RED], [$0] -> [NORTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: ADD, [SOUTH, RED], [NORTH, RED] -> [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$9], [$0] -> [WEST, RED] (t=10, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: SHL, [WEST, RED], [#5] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg0], [$0] -> [NORTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [WEST, RED], [SOUTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$8], [EAST, RED], [$24], [NORTH, RED], [$16], [WEST, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: ADD, [WEST, RED], [#1] -> [EAST, RED], [$9] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$24] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(2,1): +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [$0] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [$8], [$16] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [WEST, RED], [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(3,1): +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [arg3] -> [NORTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM: PE(0,2): +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [$8] (t=10, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg2], [$0] -> [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg4], [$1] -> [NORTH, RED], [$0] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$8] -> [NORTH, RED], [$8], [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$0] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: MUL, [$0], [SOUTH, RED] -> [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [SOUTH, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(1,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$16], [$9] -> [$0] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$24], [$10] -> [$1] (t=11, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [WEST, RED], [$24] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [WEST, RED], [$16] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$9] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$10] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) // ASM: PE(3,2): -// ASM: { -// ASM: GEP, [arg2], [$0], [$1] -> [SOUTH, RED], [WEST, RED] (t=12, inv_iters=1) -// ASM: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [#0] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: MEMSET, [SOUTH, RED], [$0], [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(0,3): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [SOUTH, RED] -> [SOUTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: STORE, [#0], [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(3,3): +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [#32] -> [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) // RUN: mlir-neura-opt %t-kernel.mlir --view-op-graph 2>&1 | sed -n '/^digraph G {/,/^}$/p' > bicg_kernel_original.dot // RUN: dot -Tpng bicg_kernel_original.dot -o bicg_kernel_original.png @@ -479,3 +962,302 @@ // RUN: FileCheck %s --input-file=bicg_kernel.dot -check-prefix=DOT // DOT: digraph G { +// DOT-NEXT: compound = true; +// DOT-NEXT: subgraph cluster_1 { +// DOT-NEXT: v2 [label = " ", shape = plain]; +// DOT-NEXT: label = "builtin.module : ()\n\ndlti.dl_spec: #dlti.dl_spec", shape = ellipse, style = filled]; +// DOT-NEXT: v64 [fillcolor = "0.571429 1.0 1.0", label = "neura.store : ()\n\nlhs_value: 0.000000e+00 : f64", shape = ellipse, style = filled]; +// DOT-NEXT: v65 [fillcolor = "0.523810 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; +// DOT-NEXT: v66 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v67 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v68 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v69 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v70 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v71 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v72 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v75 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v76 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v79 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v80 [fillcolor = "0.523810 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; +// DOT-NEXT: v81 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v82 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v83 [fillcolor = "0.523810 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; +// DOT-NEXT: v84 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v85 [fillcolor = "0.666667 1.0 1.0", label = "neura.fmul_fadd : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v86 [fillcolor = "0.571429 1.0 1.0", label = "neura.store : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v87 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v88 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v89 [fillcolor = "0.523810 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; +// DOT-NEXT: v90 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v91 [fillcolor = "0.666667 1.0 1.0", label = "neura.fmul_fadd : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v92 [fillcolor = "0.571429 1.0 1.0", label = "neura.store : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v93 [fillcolor = "0.714286 1.0 1.0", label = "neura.add : (!neura.data)\n\nrhs_value: 1 : i64", shape = ellipse, style = filled]; +// DOT-NEXT: v94 [fillcolor = "0.095238 1.0 1.0", label = "neura.icmp : (!neura.data)\n\ncmpType: \"eq\"", shape = ellipse, style = filled]; +// DOT-NEXT: v95 [fillcolor = "0.190476 1.0 1.0", label = "neura.not : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v96 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v97 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v98 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v101 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v102 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v105 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v106 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v107 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v108 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v109 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v110 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v111 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v112 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v113 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v114 [fillcolor = "0.714286 1.0 1.0", label = "neura.add : (!neura.data)\n\nrhs_value: 1 : i64", shape = ellipse, style = filled]; +// DOT-NEXT: v115 [fillcolor = "0.095238 1.0 1.0", label = "neura.icmp : (!neura.data)\n\ncmpType: \"eq\"", shape = ellipse, style = filled]; +// DOT-NEXT: v116 [fillcolor = "0.190476 1.0 1.0", label = "neura.not : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v117 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v118 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v119 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v120 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v121 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v122 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v123 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v124 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v125 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v126 [fillcolor = "0.809524 1.0 1.0", label = "neura.phi : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v127 [fillcolor = "0.380952 1.0 1.0", label = "neura.return_void : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v128 [fillcolor = "0.857143 1.0 1.0", label = "neura.yield : ()\n\noperandSegmentSizes: array", shape = ellipse, style = filled]; +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: v17 -> v23 [label = "", style = solid]; +// DOT-NEXT: v23 -> v24 [label = "", style = solid]; +// DOT-NEXT: v16 -> v25 [label = "0", style = solid]; +// DOT-NEXT: v24 -> v25 [label = "1", style = solid]; +// DOT-NEXT: v19 -> v26 [label = "0", style = solid]; +// DOT-NEXT: v24 -> v26 [label = "1", style = solid]; +// DOT-NEXT: v21 -> v27 [label = "0", style = solid]; +// DOT-NEXT: v24 -> v27 [label = "1", style = solid]; +// DOT-NEXT: v18 -> v28 [label = "0", style = solid]; +// DOT-NEXT: v24 -> v28 [label = "1", style = solid]; +// DOT-NEXT: v22 -> v29 [label = "0", style = solid]; +// DOT-NEXT: v24 -> v29 [label = "1", style = solid]; +// DOT-NEXT: v24 -> v30 [label = "", style = solid]; +// DOT-NEXT: v18 -> v31 [label = "0", style = solid]; +// DOT-NEXT: v30 -> v31 [label = "1", style = solid]; +// DOT-NEXT: v20 -> v32 [label = "0", style = solid]; +// DOT-NEXT: v30 -> v32 [label = "1", style = solid]; +// DOT-NEXT: v21 -> v33 [label = "0", style = solid]; +// DOT-NEXT: v30 -> v33 [label = "1", style = solid]; +// DOT-NEXT: v31 -> v34 [label = "", style = solid]; +// DOT-NEXT: v34 -> v35 [label = "", style = solid]; +// DOT-NEXT: v35 -> v36 [label = "0", style = solid]; +// DOT-NEXT: v35 -> v36 [label = "1", style = solid]; +// DOT-NEXT: v31 -> v37 [label = "0", style = solid]; +// DOT-NEXT: v34 -> v37 [label = "1", style = solid]; +// DOT-NEXT: v32 -> v38 [label = "0", style = solid]; +// DOT-NEXT: v34 -> v38 [label = "1", style = solid]; +// DOT-NEXT: v33 -> v39 [label = "0", style = solid]; +// DOT-NEXT: v34 -> v39 [label = "1", style = solid]; +// DOT-NEXT: v37 -> v40 [label = "", style = solid]; +// DOT-NEXT: v40 -> v41 [label = "", style = solid]; +// DOT-NEXT: v38 -> v42 [label = "0", style = solid]; +// DOT-NEXT: v39 -> v42 [label = "1", style = solid]; +// DOT-NEXT: v41 -> v42 [label = "2", style = solid]; +// DOT-NEXT: v41 -> v43 [label = "", style = solid]; +// DOT-NEXT: v25 -> v44 [label = "", style = solid]; +// DOT-NEXT: v44 -> v45 [label = "", style = solid]; +// DOT-NEXT: v26 -> v46 [label = "0", style = solid]; +// DOT-NEXT: v27 -> v46 [label = "1", style = solid]; +// DOT-NEXT: v45 -> v46 [label = "2", style = solid]; +// DOT-NEXT: v28 -> v47 [label = "", style = solid]; +// DOT-NEXT: v47 -> v48 [label = "", style = solid]; +// DOT-NEXT: v28 -> v49 [label = "0", style = solid]; +// DOT-NEXT: v47 -> v49 [label = "1", style = solid]; +// DOT-NEXT: v25 -> v50 [label = "0", style = solid]; +// DOT-NEXT: v47 -> v50 [label = "1", style = solid]; +// DOT-NEXT: v29 -> v51 [label = "0", style = solid]; +// DOT-NEXT: v47 -> v51 [label = "1", style = solid]; +// DOT-NEXT: v48 -> v52 [label = "0", style = solid]; +// DOT-NEXT: v48 -> v52 [label = "1", style = solid]; +// DOT-NEXT: v49 -> v53 [label = "", style = solid]; +// DOT-NEXT: v50 -> v54 [label = "", style = solid]; +// DOT-NEXT: v53 -> v56 [label = "0", style = solid]; +// DOT-NEXT: v55 -> v56 [label = "1", style = solid]; +// DOT-NEXT: v54 -> v58 [label = "0", style = solid]; +// DOT-NEXT: v57 -> v58 [label = "1", style = solid]; +// DOT-NEXT: v51 -> v60 [label = "0", style = solid]; +// DOT-NEXT: v59 -> v60 [label = "1", style = solid]; +// DOT-NEXT: v51 -> v62 [label = "0", style = solid]; +// DOT-NEXT: v61 -> v62 [label = "1", style = solid]; +// DOT-NEXT: v62 -> v63 [label = "", style = solid]; +// DOT-NEXT: v63 -> v64 [label = "", style = solid]; +// DOT-NEXT: v62 -> v65 [label = "", style = solid]; +// DOT-NEXT: v60 -> v67 [label = "0", style = solid]; +// DOT-NEXT: v66 -> v67 [label = "1", style = solid]; +// DOT-NEXT: v56 -> v69 [label = "0", style = solid]; +// DOT-NEXT: v68 -> v69 [label = "1", style = solid]; +// DOT-NEXT: v58 -> v71 [label = "0", style = solid]; +// DOT-NEXT: v70 -> v71 [label = "1", style = solid]; +// DOT-NEXT: v63 -> v73 [label = "0", style = solid]; +// DOT-NEXT: v72 -> v73 [label = "1", style = solid]; +// DOT-NEXT: v62 -> v75 [label = "0", style = solid]; +// DOT-NEXT: v74 -> v75 [label = "1", style = solid]; +// DOT-NEXT: v65 -> v77 [label = "0", style = solid]; +// DOT-NEXT: v76 -> v77 [label = "1", style = solid]; +// DOT-NEXT: v60 -> v79 [label = "0", style = solid]; +// DOT-NEXT: v78 -> v79 [label = "1", style = solid]; +// DOT-NEXT: v79 -> v80 [label = "", style = solid]; +// DOT-NEXT: v80 -> v81 [label = "", style = solid]; +// DOT-NEXT: v77 -> v82 [label = "", style = solid]; +// DOT-NEXT: v75 -> v83 [label = "0", style = solid]; +// DOT-NEXT: v79 -> v83 [label = "1", style = solid]; +// DOT-NEXT: v83 -> v84 [label = "", style = solid]; +// DOT-NEXT: v82 -> v85 [label = "0", style = solid]; +// DOT-NEXT: v84 -> v85 [label = "1", style = solid]; +// DOT-NEXT: v81 -> v85 [label = "2", style = solid]; +// DOT-NEXT: v85 -> v86 [label = "0", style = solid]; +// DOT-NEXT: v80 -> v86 [label = "1", style = solid]; +// DOT-NEXT: v73 -> v87 [label = "", style = solid]; +// DOT-NEXT: v83 -> v88 [label = "", style = solid]; +// DOT-NEXT: v79 -> v89 [label = "", style = solid]; +// DOT-NEXT: v89 -> v90 [label = "", style = solid]; +// DOT-NEXT: v88 -> v91 [label = "0", style = solid]; +// DOT-NEXT: v90 -> v91 [label = "1", style = solid]; +// DOT-NEXT: v87 -> v91 [label = "2", style = solid]; +// DOT-NEXT: v91 -> v92 [label = "0", style = solid]; +// DOT-NEXT: v73 -> v92 [label = "1", style = solid]; +// DOT-NEXT: v79 -> v93 [label = "", style = solid]; +// DOT-NEXT: v93 -> v94 [label = "0", style = solid]; +// DOT-NEXT: v71 -> v94 [label = "1", style = solid]; +// DOT-NEXT: v94 -> v95 [label = "", style = solid]; +// DOT-NEXT: v93 -> v96 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v96 [label = "1", style = solid]; +// DOT-NEXT: v96 -> v97 [label = "0", style = solid]; +// DOT-NEXT: v78 -> v97 [label = "1", style = solid]; +// DOT-NEXT: v77 -> v98 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v98 [label = "1", style = solid]; +// DOT-NEXT: v98 -> v99 [label = "0", style = solid]; +// DOT-NEXT: v76 -> v99 [label = "1", style = solid]; +// DOT-NEXT: v75 -> v100 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v100 [label = "1", style = solid]; +// DOT-NEXT: v100 -> v101 [label = "0", style = solid]; +// DOT-NEXT: v74 -> v101 [label = "1", style = solid]; +// DOT-NEXT: v73 -> v102 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v102 [label = "1", style = solid]; +// DOT-NEXT: v102 -> v103 [label = "0", style = solid]; +// DOT-NEXT: v72 -> v103 [label = "1", style = solid]; +// DOT-NEXT: v71 -> v104 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v104 [label = "1", style = solid]; +// DOT-NEXT: v104 -> v105 [label = "0", style = solid]; +// DOT-NEXT: v70 -> v105 [label = "1", style = solid]; +// DOT-NEXT: v69 -> v106 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v106 [label = "1", style = solid]; +// DOT-NEXT: v106 -> v107 [label = "0", style = solid]; +// DOT-NEXT: v68 -> v107 [label = "1", style = solid]; +// DOT-NEXT: v67 -> v108 [label = "0", style = solid]; +// DOT-NEXT: v95 -> v108 [label = "1", style = solid]; +// DOT-NEXT: v108 -> v109 [label = "0", style = solid]; +// DOT-NEXT: v66 -> v109 [label = "1", style = solid]; +// DOT-NEXT: v75 -> v110 [label = "0", style = solid]; +// DOT-NEXT: v94 -> v110 [label = "1", style = solid]; +// DOT-NEXT: v69 -> v111 [label = "0", style = solid]; +// DOT-NEXT: v94 -> v111 [label = "1", style = solid]; +// DOT-NEXT: v67 -> v112 [label = "0", style = solid]; +// DOT-NEXT: v94 -> v112 [label = "1", style = solid]; +// DOT-NEXT: v71 -> v113 [label = "0", style = solid]; +// DOT-NEXT: v94 -> v113 [label = "1", style = solid]; +// DOT-NEXT: v110 -> v114 [label = "", style = solid]; +// DOT-NEXT: v114 -> v115 [label = "0", style = solid]; +// DOT-NEXT: v111 -> v115 [label = "1", style = solid]; +// DOT-NEXT: v115 -> v116 [label = "", style = solid]; +// DOT-NEXT: v114 -> v117 [label = "0", style = solid]; +// DOT-NEXT: v116 -> v117 [label = "1", style = solid]; +// DOT-NEXT: v117 -> v118 [label = "0", style = solid]; +// DOT-NEXT: v61 -> v118 [label = "1", style = solid]; +// DOT-NEXT: v112 -> v119 [label = "0", style = solid]; +// DOT-NEXT: v116 -> v119 [label = "1", style = solid]; +// DOT-NEXT: v119 -> v120 [label = "0", style = solid]; +// DOT-NEXT: v59 -> v120 [label = "1", style = solid]; +// DOT-NEXT: v113 -> v121 [label = "0", style = solid]; +// DOT-NEXT: v116 -> v121 [label = "1", style = solid]; +// DOT-NEXT: v121 -> v122 [label = "0", style = solid]; +// DOT-NEXT: v57 -> v122 [label = "1", style = solid]; +// DOT-NEXT: v111 -> v123 [label = "0", style = solid]; +// DOT-NEXT: v116 -> v123 [label = "1", style = solid]; +// DOT-NEXT: v123 -> v124 [label = "0", style = solid]; +// DOT-NEXT: v55 -> v124 [label = "1", style = solid]; +// DOT-NEXT: v115 -> v125 [label = "0", style = solid]; +// DOT-NEXT: v115 -> v125 [label = "1", style = solid]; +// DOT-NEXT: v52 -> v126 [label = "0", style = solid]; +// DOT-NEXT: v36 -> v126 [label = "1", style = solid]; +// DOT-NEXT: v125 -> v126 [label = "2", style = solid]; diff --git a/test/e2e/fft/fft_kernel.mlir b/test/e2e/fft/fft_kernel.mlir index 368e8462..48685cb4 100644 --- a/test/e2e/fft/fft_kernel.mlir +++ b/test/e2e/fft/fft_kernel.mlir @@ -375,54 +375,596 @@ // MAPPING-NEXT: } -// YAML: - column: 2 -// YAML: row: 0 -// YAML: core_id: "2" -// YAML: entries: -// YAML: - entry_id: "entry0" -// YAML: instructions: -// YAML: - index_per_ii: 12 -// YAML: operations: -// YAML: - opcode: "GEP" -// YAML: id: 302 -// YAML: time_step: 12 -// YAML: invalid_iterations: 0 -// YAML: src_operands: -// YAML: - operand: "arg0" -// YAML: color: "RED" -// YAML: - operand: "NORTH" -// YAML: color: "RED" -// YAML: dst_operands: -// YAML: - operand: "WEST" -// YAML: color: "RED" -// YAML: - operand: "$0" -// YAML: color: "RED" -// YAML: - column: 3 -// YAML: row: 2 -// YAML: core_id: "11" -// YAML: entries: -// YAML: - entry_id: "entry0" -// YAML: instructions: -// YAML: - index_per_ii: 11 -// YAML: operations: -// YAML: - opcode: "GEP" -// YAML: id: 171 -// YAML: time_step: 11 -// YAML: invalid_iterations: 0 -// YAML: src_operands: -// YAML: - operand: "arg2" -// YAML: color: "RED" -// YAML: - operand: "WEST" -// YAML: color: "RED" -// YAML: dst_operands: -// YAML: - operand: "SOUTH" -// YAML: color: "RED" +// YAML: array_config: +// YAML-NEXT: columns: 4 +// YAML-NEXT: rows: 4 +// YAML-NEXT: compiled_ii: 19 +// YAML-NEXT: cores: +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "0" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 345 +// YAML-NEXT: time_step: 20 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 342 +// YAML-NEXT: time_step: 20 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 346 +// YAML-NEXT: time_step: 21 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 15 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 311 +// YAML-NEXT: time_step: 15 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 18 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 337 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 260 +// YAML-NEXT: time_step: 19 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$2" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 2640005 +// YAML-NEXT: time_step: 19 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 348 +// YAML-NEXT: time_step: 20 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$3" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 57 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 13 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 317 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 14 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 313 +// YAML-NEXT: time_step: 14 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$3" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 3110002 +// YAML-NEXT: time_step: 14 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 15 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "MUL" +// YAML-NEXT: id: 325 +// YAML-NEXT: time_step: 15 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 16 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 250 +// YAML-NEXT: time_step: 16 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$2" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 71 +// YAML-NEXT: time_step: 16 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 17 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 83 +// YAML-NEXT: time_step: 17 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 3330001 +// YAML-NEXT: time_step: 17 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 18 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 114 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 270 +// YAML-NEXT: time_step: 20 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 6 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 290001 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 12 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 302 +// YAML-NEXT: time_step: 12 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 13 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 194 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 3130000 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 14 +// YAML-NEXT: operations: +// ASM: # Compiled II: 19 +// ASM: PE(0,0): +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [EAST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [$1] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: ADD, [NORTH, RED], [EAST, RED] -> [$0] (t=18, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=18) +// ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$2], [NORTH, RED] -> [EAST, RED] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: STORE, [NORTH, RED], [$3] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [EAST, RED] -> [EAST, RED], [$0] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: MUL, [$0], [EAST, RED] -> [EAST, RED] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [EAST, RED] (t=17, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=17, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=17) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$1], [NORTH, RED] -> [NORTH, RED] (t=18, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=18) // ASM: PE(2,0): -// ASM: { -// ASM: GEP, [arg0], [NORTH, RED] -> [WEST, RED], [$0] (t=12, inv_iters=0) -// ASM: } (idx_per_ii=12) -// ASM: PE(3,2): -// ASM: { -// ASM: GEP, [arg2], [WEST, RED] -> [SOUTH, RED] (t=11, inv_iters=0) -// ASM: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$1] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: GEP, [NORTH, RED] -> [WEST, RED], [$0] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$1] -> [$0], [WEST, RED], [$1] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: MUL, [EAST, RED], [$0] -> [NORTH, RED] (t=15, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$1] -> [WEST, RED] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: ADD, [EAST, RED], [WEST, RED] -> [NORTH, RED], [WEST, RED] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [WEST, RED] (t=18, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=18, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=18) +// ASM: PE(3,0): +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED], [NORTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [WEST, RED], [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: MUL, [$0], [NORTH, RED] -> [WEST, RED] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM: PE(0,1): +// ASM-NEXT: { +// ASM-NEXT: SUB, [NORTH, RED], [EAST, RED] -> [SOUTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$2], [$0] -> [EAST, RED] (t=20, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$5] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=3, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [EAST, RED] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: ZEXT, [$0] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$4] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$1] -> [NORTH, RED], [$1], [$0] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [NORTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$1], [NORTH, RED] -> [$1] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$2] -> [NORTH, RED] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$3], [$5] -> [$0], [NORTH, RED] (t=15, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=17, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=17) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [EAST, RED] (t=18, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$4] (t=18, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=18) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: SUB, [NORTH, RED], [EAST, RED] -> [SOUTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=19, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$4], [$5] -> [$4] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: ICMP_SGT, [NORTH, RED], [#0] -> [EAST, RED], [$0], [$2], [NORTH, RED], [WEST, RED] (t=2, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$5] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [$0], [WEST, RED], [$1] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: ZEXT, [$0] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$6] (t=23, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$6] -> [NORTH, RED], [WEST, RED] (t=5, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$0] (t=24, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$1], [$0] -> [$0], [$1] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [NORTH, RED] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: ZEXT, [$0] -> [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$2] -> [$0] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: ZEXT, [$0] -> [$0] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$3] -> [$0] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$5] -> [WEST, RED], [$0] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [NORTH, RED], [$2] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [EAST, RED], [#8] -> [$0], [SOUTH, RED], [$3] (t=15, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$1], [$4] -> [$4], [NORTH, RED] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$5] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$3] -> [SOUTH, RED] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [WEST, RED], [SOUTH, RED], [$1], [EAST, RED], [NORTH, RED] (t=17, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=17, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=17) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$2], [$0] -> [$3] (t=18, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=18, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=18, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$1] -> [EAST, RED] (t=18, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=18) +// ASM: PE(2,1): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$4], [WEST, RED] -> [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$5], [WEST, RED] -> [EAST, RED] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$2], [$1] -> [$6] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$7], [NORTH, RED] -> [$4] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$2] (t=23, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: SEXT, [$0] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$2] -> [NORTH, RED], [$2] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$5] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [WEST, RED], [$4] -> [$0], [$7] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$4] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: ADD, [NORTH, RED], [$0] -> [SOUTH, RED], [$0] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: GEP, [$0] -> [EAST, RED], [WEST, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$1], [$3] -> [$0] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [WEST, RED], [$3] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: MUL, [SOUTH, RED], [EAST, RED] -> [$0] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$2], [$6] -> [$2], [NORTH, RED] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM-NEXT: { +// ASM-NEXT: SUB, [$0], [$1] -> [$0], [NORTH, RED] (t=17, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=17, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=17, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=17, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=17) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$3], [WEST, RED] -> [$3] (t=18, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=18, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=18) +// ASM: PE(3,1): +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$0] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$1] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [WEST, RED], [$0] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: SHL, [$0], [#1] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: OR, [$0], [#1] -> [WEST, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=12, inv_iters=0) diff --git a/test/e2e/fir/fir_kernel.mlir b/test/e2e/fir/fir_kernel.mlir index 1a973f09..33bcefc1 100644 --- a/test/e2e/fir/fir_kernel.mlir +++ b/test/e2e/fir/fir_kernel.mlir @@ -54,7 +54,7 @@ // MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 27 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 30 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 34 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data @@ -369,109 +369,9 @@ // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 7 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 13 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#32" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 27 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "11" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 14 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" // ASM: # Compiled II: 5 @@ -538,13 +438,13 @@ // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [SOUTH, RED], [EAST, RED], [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$1] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED] (t=3, inv_iters=0) @@ -580,3 +480,72 @@ // RUN: FileCheck %s --input-file=fir_kernel.dot -check-prefix=DOT // DOT: digraph G { +// DOT-NEXT: compound = true; +// DOT-NEXT: subgraph cluster_1 { +// DOT-NEXT: v2 [label = " ", shape = plain]; +// DOT-NEXT: label = "builtin.module : ()\n\ndlti.dl_spec: #dlti.dl_spec", shape = ellipse, style = filled]; +// DOT-NEXT: v19 [fillcolor = "0.266667 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v20 [fillcolor = "0.200000 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; +// DOT-NEXT: v21 [fillcolor = "0.266667 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v22 [fillcolor = "0.333333 1.0 1.0", label = "neura.mul : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v23 [fillcolor = "0.400000 1.0 1.0", label = "neura.add : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v24 [fillcolor = "0.400000 1.0 1.0", label = "neura.add : (!neura.data)\n\nrhs_value: 1 : i64", shape = ellipse, style = filled]; +// DOT-NEXT: v25 [fillcolor = "0.466667 1.0 1.0", label = "neura.icmp : (!neura.data)\n\ncmpType: \"eq\"\nrhs_value: 32 : i64", shape = ellipse, style = filled]; +// DOT-NEXT: v26 [fillcolor = "0.533333 1.0 1.0", label = "neura.not : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v27 [fillcolor = "0.600000 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v28 [fillcolor = "0.666667 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v29 [fillcolor = "0.600000 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v30 [fillcolor = "0.666667 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v31 [fillcolor = "0.600000 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; +// DOT-NEXT: v32 [fillcolor = "0.733333 1.0 1.0", label = "neura.return_value : ()\n", shape = ellipse, style = filled]; +// DOT-NEXT: v33 [fillcolor = "0.800000 1.0 1.0", label = "neura.yield : ()\n\noperandSegmentSizes: array", shape = ellipse, style = filled]; +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: } +// DOT-NEXT: v13 -> v15 [label = "0", style = solid]; +// DOT-NEXT: v14 -> v15 [label = "1", style = solid]; +// DOT-NEXT: v12 -> v17 [label = "0", style = solid]; +// DOT-NEXT: v16 -> v17 [label = "1", style = solid]; +// DOT-NEXT: v17 -> v18 [label = "", style = solid]; +// DOT-NEXT: v18 -> v19 [label = "", style = solid]; +// DOT-NEXT: v17 -> v20 [label = "", style = solid]; +// DOT-NEXT: v20 -> v21 [label = "", style = solid]; +// DOT-NEXT: v21 -> v22 [label = "0", style = solid]; +// DOT-NEXT: v19 -> v22 [label = "1", style = solid]; +// DOT-NEXT: v22 -> v23 [label = "0", style = solid]; +// DOT-NEXT: v15 -> v23 [label = "1", style = solid]; +// DOT-NEXT: v17 -> v24 [label = "", style = solid]; +// DOT-NEXT: v24 -> v25 [label = "", style = solid]; +// DOT-NEXT: v25 -> v26 [label = "", style = solid]; +// DOT-NEXT: v24 -> v27 [label = "0", style = solid]; +// DOT-NEXT: v26 -> v27 [label = "1", style = solid]; +// DOT-NEXT: v27 -> v28 [label = "0", style = solid]; +// DOT-NEXT: v16 -> v28 [label = "1", style = solid]; +// DOT-NEXT: v23 -> v29 [label = "0", style = solid]; +// DOT-NEXT: v26 -> v29 [label = "1", style = solid]; +// DOT-NEXT: v29 -> v30 [label = "0", style = solid]; +// DOT-NEXT: v14 -> v30 [label = "1", style = solid]; +// DOT-NEXT: v23 -> v31 [label = "0", style = solid]; +// DOT-NEXT: v25 -> v31 [label = "1", style = solid]; +// DOT-NEXT: v31 -> v32 [label = "", style = solid]; +// DOT-NEXT: } diff --git a/test/e2e/fir/fir_kernel_vec.mlir b/test/e2e/fir/fir_kernel_vec.mlir index 667d78a2..0ba33efc 100644 --- a/test/e2e/fir/fir_kernel_vec.mlir +++ b/test/e2e/fir/fir_kernel_vec.mlir @@ -52,7 +52,7 @@ // MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 27 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 30 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 34 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data @@ -69,6 +69,7 @@ // MAPPING-NEXT: neura.return_value %39 : !neura.data {dfg_id = 43 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 3 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} // MAPPING-NEXT: } +// MAPPING-NEXT: } // YAML: array_config: @@ -369,123 +370,7 @@ // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 7 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 13 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#32" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 27 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "11" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 14 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "13" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VALUE" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 2 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" @@ -551,13 +436,13 @@ // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [SOUTH, RED], [EAST, RED], [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#4] -> [$0], [$1] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#4] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED] (t=3, inv_iters=0) diff --git a/test/e2e/gemm/gemm_kernel.mlir b/test/e2e/gemm/gemm_kernel.mlir index 495cb2de..8f59cd9a 100644 --- a/test/e2e/gemm/gemm_kernel.mlir +++ b/test/e2e/gemm/gemm_kernel.mlir @@ -298,302 +298,47 @@ // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 // YAML-NEXT: compiled_ii: 17 -// YAML-NEXT: cores: -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "0" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 66 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 152 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 184 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 6 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 52 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 58 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 71 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 174 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 137 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 45 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 53 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1420001 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 72 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 181 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI" -// YAML-NEXT: id: 255 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 267 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 880002 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1740001 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1770001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 139 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 187 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 +// YAML: core_id: "0" +// YAML: entries: +// YAML: - entry_id: "entry0" +// YAML: instructions: +// YAML: - index_per_ii: 0 +// YAML: operations: +// YAML: - opcode: "GRANT_PREDICATE" +// YAML: - index_per_ii: 1 +// YAML: operations: +// YAML: - opcode: "MUL" +// YAML: - index_per_ii: 2 +// YAML: operations: +// YAML: - opcode: "GRANT_PREDICATE" +// YAML: - index_per_ii: 4 +// YAML: operations: +// YAML: - opcode: "GRANT_ONCE" +// YAML: - opcode: "DATA_MOV" +// YAML: - index_per_ii: 5 +// YAML: operations: +// YAML: - opcode: "DATA_MOV" +// YAML: - index_per_ii: 8 +// YAML: operations: +// YAML: - opcode: "GRANT_ONCE" +// YAML: - index_per_ii: 9 +// YAML: operations: +// YAML: - opcode: "GRANT_PREDICATE" +// YAML: - index_per_ii: 10 +// YAML: operations: +// YAML: - opcode: "ZEXT" +// YAML: - index_per_ii: 13 +// YAML: operations: +// YAML: - opcode: "DATA_MOV" +// YAML: - index_per_ii: 14 +// YAML: operations: +// YAML: - opcode: "DATA_MOV" +// YAML: - index_per_ii: 15 +// YAML: operations: +// YAML: - opcode: "NOT" +// YAML: - index_per_ii: 16 +// YAML: operations: +// YAML: - opcode: "GRANT_ONCE" // // ASM: # Compiled II: 17 // ASM: PE(0,0): @@ -635,255 +380,3 @@ // ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=16, inv_iters=0) // ASM-NEXT: } (idx_per_ii=16) // ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ADD, [EAST, RED], [WEST, RED] -> [EAST, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: PHI, [$0], [NORTH, RED] -> [$0] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [$0] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM: PE(2,0): -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [WEST, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: STORE, [WEST, RED], [$0] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [WEST, RED] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM: PE(0,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: CONSTANT, [arg1] -> [$0] (t=1, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$1] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: AND, [NORTH, RED], [$0] -> [$0], [SOUTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$6] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [SOUTH, RED], [NORTH, RED], [EAST, RED], [$0], [$4] (t=4, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$2] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [SOUTH, RED], [$0] -> [$0], [EAST, RED] (t=5, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$3] (t=22, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$5] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$3] -> [EAST, RED], [$0] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$7] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [EAST, RED], [$0] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$2] -> [$2], [NORTH, RED], [EAST, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$5] -> [$0] (t=11, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$7] -> [$0] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [EAST, RED] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$6] -> [SOUTH, RED], [$0] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [EAST, RED], [NORTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$2], [$3] -> [NORTH, RED] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$4] -> [SOUTH, RED] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM: PE(1,1): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$4], [$0] -> [WEST, RED] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$2], [$0] -> [$0], [$2], [$3] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$4], [$5], [$0], [EAST, RED], [NORTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [SOUTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$4] -> [EAST, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$5] -> [WEST, RED] (t=21, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$2] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [WEST, RED] -> [$0] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [NORTH, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$2] -> [EAST, RED], [$0] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [WEST, RED], [EAST, RED], [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$2] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [NORTH, RED] -> [$0], [$1], [EAST, RED], [$3], [WEST, RED], [$4], [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$3], [$0], [$7], [$6], [NORTH, RED], [$5], [SOUTH, RED], [WEST, RED] (t=11, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=11, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$3] -> [EAST, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [$0] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$7] -> [WEST, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$6] -> [SOUTH, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$5] -> [NORTH, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$4] -> [EAST, RED] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [NORTH, RED], [$4] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [$1] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$0] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$2], [EAST, RED] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM: PE(2,1): -// ASM-NEXT: { -// ASM-NEXT: GEP, [$4], [$5] -> [SOUTH, RED], [$4] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$3] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED], [$0] (t=18, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$4] -> [SOUTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [WEST, RED] -> [NORTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$4] (t=20, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$6] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg1] -> [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$3], [$0] -> [$1] (t=22, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$2] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$7], [$8] -> [$7] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$3] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$5] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [$0] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$2] -> [$2], [$0] (t=11, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$4] -> [$4], [SOUTH, RED], [$0] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED], [WEST, RED] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$2], [$0] -> [$0] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$7] -> [SOUTH, RED], [$7] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$3], [$6] -> [EAST, RED], [$0] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$2] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM: PE(0,2): diff --git a/test/e2e/gemv/gemv_kernel.mlir b/test/e2e/gemv/gemv_kernel.mlir index a59d0bf0..af0478fa 100644 --- a/test/e2e/gemv/gemv_kernel.mlir +++ b/test/e2e/gemv/gemv_kernel.mlir @@ -39,10 +39,10 @@ // MAPPING-NEXT: %13 = "neura.data_mov"(%12) {dfg_id = 37 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %14 = "neura.gep"(%13) <{operandSegmentSizes = array}> {dfg_id = 43 : i32, lhs_value = "%arg0", mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %15 = neura.reserve {dfg_id = 5 : i32} : !neura.data -// MAPPING-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 23 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 321 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 23 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %17 = neura.phi_start %16, %15 {dfg_id = 29 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %18 = neura.reserve {dfg_id = 6 : i32} : !neura.data -// MAPPING-NEXT: %19 = "neura.data_mov"(%7) {dfg_id = 19 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 163 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 4 : i32}, {id = 163 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 5 : i32}, {id = 163 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 163 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = "neura.data_mov"(%7) {dfg_id = 19 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %20 = neura.phi_start %19, %18 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %21 = neura.reserve {dfg_id = 7 : i32} : !neura.data // MAPPING-NEXT: %22 = "neura.data_mov"(%10) {dfg_id = 20 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data @@ -57,7 +57,7 @@ // MAPPING-NEXT: %31 = "neura.data_mov"(%7) {dfg_id = 18 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %32 = neura.phi_start %31, %30 {dfg_id = 24 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %33 = "neura.data_mov"(%26) {dfg_id = 58 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%32) {dfg_id = 32 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%32) {dfg_id = 32 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %35 = "neura.gep"(%33, %34) <{operandSegmentSizes = array}> {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 74 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %37 = "neura.load"(%36) {dfg_id = 82 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data @@ -77,38 +77,38 @@ // MAPPING-NEXT: %51 = "neura.icmp"(%50) <{cmpType = "eq"}> {dfg_id = 48 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %52 = "neura.data_mov"(%51) {dfg_id = 55 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %53 = "neura.not"(%52) {dfg_id = 62 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %54 = "neura.data_mov"(%49) {dfg_id = 44 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 162 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 162 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %54 = "neura.data_mov"(%49) {dfg_id = 44 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 4 : i32}, {id = 169 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 169 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %55 = "neura.data_mov"(%53) {dfg_id = 73 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %56 = neura.grant_predicate %54, %55 {dfg_id = 81 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %56 -> %30 {dfg_id = 90 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %57 = "neura.data_mov"(%47) {dfg_id = 106 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 194 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%53) {dfg_id = 72 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 195 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 195 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 195 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 195 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %57 = "neura.data_mov"(%47) {dfg_id = 106 : i32, mapping_locs = [{id = 201 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 201 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%53) {dfg_id = 72 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 208 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 208 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %59 = neura.grant_predicate %57, %58 {dfg_id = 112 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %59 -> %27 {dfg_id = 117 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 322 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 322 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 322 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 322 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 322 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 322 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %60 = "neura.data_mov"(%26) {dfg_id = 57 : i32, mapping_locs = [{id = 4003 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 4 : i32}, {id = 4003 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 5 : i32}, {id = 4003 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 4003 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 4003 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 4003 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 4003 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %59 -> %27 {dfg_id = 117 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 337 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 337 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 337 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 337 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 337 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}, {id = 337 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %60 = "neura.data_mov"(%26) {dfg_id = 57 : i32, mapping_locs = [{id = 4024 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 4 : i32}, {id = 4024 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 4024 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 6 : i32}, {id = 4024 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 7 : i32}, {id = 4024 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 4024 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 4024 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %61 = "neura.data_mov"(%53) {dfg_id = 71 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %62 = neura.grant_predicate %60, %61 {dfg_id = 80 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %62 -> %24 {dfg_id = 89 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %63 = "neura.data_mov"(%23) {dfg_id = 36 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 4002 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 4002 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 4002 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %62 -> %24 {dfg_id = 89 : i32, mapping_locs = [{id = 4009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 4009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 4009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 4009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %63 = "neura.data_mov"(%23) {dfg_id = 36 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 4016 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 4016 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 4016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %64 = "neura.data_mov"(%53) {dfg_id = 70 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 21 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %65 = neura.grant_predicate %63, %64 {dfg_id = 79 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %65 -> %21 {dfg_id = 88 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 162 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 162 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 69 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 17 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 163 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 163 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 163 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %65 -> %21 {dfg_id = 88 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 69 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 17 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 176 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 176 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 176 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %68 = neura.grant_predicate %66, %67 {dfg_id = 78 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %68 -> %18 {dfg_id = 87 : i32, mapping_locs = [{id = 166 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 11 : i32}, {id = 166 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 12 : i32}, {id = 166 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 13 : i32}, {id = 166 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 14 : i32}, {id = 166 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 15 : i32}, {id = 166 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 16 : i32}, {id = 166 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 17 : i32}, {id = 166 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %68 -> %18 {dfg_id = 87 : i32, mapping_locs = [{id = 184 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 184 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 184 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 184 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 184 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}, {id = 184 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 184 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %69 = "neura.data_mov"(%17) {dfg_id = 40 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%53) {dfg_id = 68 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 322 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 322 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 322 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%53) {dfg_id = 68 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 329 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 329 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 329 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %71 = neura.grant_predicate %69, %70 {dfg_id = 77 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %71 -> %15 {dfg_id = 86 : i32, mapping_locs = [{id = 323 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 323 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 323 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 323 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 323 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 323 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 323 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 323 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 323 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %71 -> %15 {dfg_id = 86 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 336 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 336 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 336 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 336 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 336 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 336 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 336 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %72 = "neura.data_mov"(%23) {dfg_id = 35 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %73 = "neura.data_mov"(%51) {dfg_id = 54 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %74 = neura.grant_predicate %72, %73 {dfg_id = 61 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %75 = "neura.data_mov"(%47) {dfg_id = 105 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %76 = "neura.data_mov"(%51) {dfg_id = 53 : i32, mapping_locs = [{id = 165 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 193 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %76 = "neura.data_mov"(%51) {dfg_id = 53 : i32, mapping_locs = [{id = 177 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %77 = neura.grant_predicate %75, %76 {dfg_id = 111 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %78 = "neura.data_mov"(%20) {dfg_id = 33 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %79 = "neura.data_mov"(%51) {dfg_id = 52 : i32, mapping_locs = [{id = 164 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 5 : i32}, {id = 164 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 6 : i32}, {id = 164 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 7 : i32}, {id = 164 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 8 : i32}, {id = 164 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %79 = "neura.data_mov"(%51) {dfg_id = 52 : i32, mapping_locs = [{id = 170 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 5 : i32}, {id = 170 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 6 : i32}, {id = 170 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 7 : i32}, {id = 170 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 8 : i32}, {id = 170 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %80 = neura.grant_predicate %78, %79 {dfg_id = 60 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %81 = "neura.data_mov"(%17) {dfg_id = 39 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %82 = "neura.data_mov"(%51) {dfg_id = 51 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data @@ -127,22 +127,23 @@ // MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 83 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %95 = "neura.data_mov"(%93) {dfg_id = 104 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %96 = neura.grant_predicate %94, %95 {dfg_id = 110 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %96 -> %8 {dfg_id = 115 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %96 -> %8 {dfg_id = 115 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %97 = "neura.data_mov"(%80) {dfg_id = 65 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %98 = "neura.data_mov"(%93) {dfg_id = 103 : i32, mapping_locs = [{id = 165 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 9 : i32}, {id = 165 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 10 : i32}, {id = 165 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %98 = "neura.data_mov"(%93) {dfg_id = 103 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %99 = neura.grant_predicate %97, %98 {dfg_id = 109 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %99 -> %5 {dfg_id = 114 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %100 = "neura.data_mov"(%83) {dfg_id = 64 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %101 = "neura.data_mov"(%93) {dfg_id = 102 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %102 = neura.grant_predicate %100, %101 {dfg_id = 108 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %102 -> %2 {dfg_id = 113 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 321 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 321 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 321 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %102 -> %2 {dfg_id = 113 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %103 = "neura.data_mov"(%91) {dfg_id = 94 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %104 = "neura.data_mov"(%91) {dfg_id = 95 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %104 = "neura.data_mov"(%91) {dfg_id = 95 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %105 = neura.grant_predicate %103, %104 {dfg_id = 98 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %106 = "neura.data_mov"(%105) {dfg_id = 101 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: neura.return_void %106 : !neura.data {dfg_id = 107 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 11 : i32} // MAPPING-NEXT: } +// MAPPING-NEXT: } // YAML: array_config: @@ -178,7 +179,7 @@ // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: @@ -189,7 +190,7 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" @@ -434,712 +435,27 @@ // YAML-NEXT: time_step: 11 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" +// YAML-NEXT: - operand: "$24" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" +// YAML-NEXT: - operand: "$9" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" // YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 50 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 26 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 61 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 75 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 92 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 98 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 79 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 71 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 78 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 109 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 24 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 41 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 19 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 48 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 58 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 63 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 530000 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 81 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 25 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 69 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 830001 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 99 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 700003 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 60 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 112 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 31 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 42 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 62 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 690000 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 53 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 38 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 700002 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 100 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 111 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 700001 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 107 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 51 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 59 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 108 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 113 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 117 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 17 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 28 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 68 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 77 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" // ASM: # Compiled II: 11 // ASM: PE(0,0): // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED], [$0] (t=0, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$1] (t=11, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [$0], [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [$0], [NORTH, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: SHL, [$0], [#4] -> [$0] (t=2, inv_iters=0) @@ -1192,16 +508,16 @@ // ASM-NEXT: } (idx_per_ii=8) // ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$3], [$0] -> [$2] (t=11, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$24], [$0] -> [$9] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$2] -> [EAST, RED], [$3] (t=4, inv_iters=0) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$9] -> [EAST, RED], [$24] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [$2], [$0] (t=5, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [$16], [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [SOUTH, RED], [$0] (t=6, inv_iters=0) @@ -1210,55 +526,55 @@ // ASM-NEXT: ADD, [$0], [#1] -> [$0], [EAST, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [EAST, RED], [$0], [$1] (t=8, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [EAST, RED], [$0], [$8] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [EAST, RED] -> [$1] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$16], [EAST, RED] -> [$8] (t=10, inv_iters=0) // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [$6] (t=11, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$24] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$5] -> [SOUTH, RED] (t=12, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$9] -> [SOUTH, RED] (t=12, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [$1], [EAST, RED], [$0] (t=3, inv_iters=0) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [$8], [EAST, RED], [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$2] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$3] (t=4, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$9] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$16] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [EAST, RED], [WEST, RED], [$5], [$4], [NORTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [EAST, RED], [WEST, RED], [$17], [$10], [NORTH, RED] (t=5, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GEP, [$0], [$1] -> [SOUTH, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$5] -> [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: GEP, [$0], [$8] -> [SOUTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$17] -> [EAST, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [EAST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$9], [EAST, RED] -> [$0] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$3], [$6] -> [$2], [$1] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=8, inv_iters=0) +// ASM-NEXT: PHI_START, [$16], [$24] -> [$8], [$1] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=8, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: NOT, [WEST, RED] -> [SOUTH, RED], [$5], [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: NOT, [WEST, RED] -> [SOUTH, RED], [$9], [NORTH, RED] (t=9, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$4] -> [$1] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$10] -> [$1] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [NORTH, RED] (t=11, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$9], [$16] -> [NORTH, RED] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=4, inv_iters=0) @@ -1267,21 +583,21 @@ // ASM-NEXT: GEP, [arg1], [$0] -> [SOUTH, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: NOT, [WEST, RED] -> [WEST, RED], [$3], [SOUTH, RED], [EAST, RED], [$0], [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: NOT, [WEST, RED] -> [WEST, RED], [$16], [SOUTH, RED], [EAST, RED], [$0], [NORTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=8, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: ADD, [SOUTH, RED], [$0] -> [$2], [$0] (t=9, inv_iters=0) +// ASM-NEXT: ADD, [SOUTH, RED], [$0] -> [$9], [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [SOUTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM: PE(3,1): // ASM-NEXT: { @@ -1303,26 +619,26 @@ // ASM-NEXT: } (idx_per_ii=10) // ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$1] (t=11, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$8] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$2] (t=12, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$17] (t=12, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [$1], [$0] (t=6, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [$8], [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$2] -> [SOUTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$2] (t=7, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$17] -> [SOUTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$9] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$3] -> [$0], [WEST, RED] (t=8, inv_iters=0) +// ASM-NEXT: PHI_START, [$8], [$16] -> [$0], [WEST, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$2] -> [$3] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$9] -> [$16] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) diff --git a/test/e2e/histogram/histogram_kernel.mlir b/test/e2e/histogram/histogram_kernel.mlir index fa18a901..a36bd3d1 100644 --- a/test/e2e/histogram/histogram_kernel.mlir +++ b/test/e2e/histogram/histogram_kernel.mlir @@ -49,7 +49,7 @@ // MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 37 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %21 = "neura.add"(%20) {dfg_id = 38 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data // MAPPING-NEXT: %22 = "neura.data_mov"(%21) {dfg_id = 39 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = "neura.data_mov"(%17) {dfg_id = 34 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.data_mov"(%17) {dfg_id = 34 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: "neura.store"(%22, %23) {dfg_id = 40 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %24 = "neura.data_mov"(%3) {dfg_id = 5 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %25 = "neura.add"(%24) {dfg_id = 7 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data @@ -57,17 +57,18 @@ // MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "eq"}> {dfg_id = 12 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 20 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %28 = "neura.data_mov"(%27) {dfg_id = 16 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %29 = "neura.not"(%28) {dfg_id = 19 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = "neura.data_mov"(%25) {dfg_id = 9 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = "neura.data_mov"(%25) {dfg_id = 9 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %31 = "neura.data_mov"(%29) {dfg_id = 22 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %32 = neura.grant_predicate %30, %31 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %32 -> %1 {dfg_id = 27 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %33 = "neura.data_mov"(%27) {dfg_id = 14 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 15 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 289 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 289 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 15 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 3 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 289 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 289 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %35 = neura.grant_predicate %33, %34 {dfg_id = 18 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 21 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 21 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: neura.return_void %36 : !neura.data {dfg_id = 24 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 2 : i32} // MAPPING-NEXT: } +// MAPPING-NEXT: } // YAML: array_config: // YAML-NEXT: columns: 4 @@ -226,7 +227,7 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: @@ -263,20 +264,122 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 7 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ICMP_EQ" +// YAML-NEXT: id: 12 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#20" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$9" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 19 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 150000 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$9" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 25 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "9" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 14 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 18 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: // ASM: # Compiled II: 6 -// ASM-EMPTY: -// ASM-NEXT: PE(0,0): +// ASM: PE(0,0): // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: ADD, [EAST, RED], [#-5] -> [NORTH, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) -// ASM-EMPTY: -// ASM-NEXT: PE(1,0): +// ASM: PE(1,0): // ASM-NEXT: { // ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$0] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) @@ -292,8 +395,7 @@ // ASM-NEXT: { // ASM-NEXT: MUL, [$0], [#5] -> [WEST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) -// ASM-EMPTY: -// ASM-NEXT: PE(0,1): +// ASM: PE(0,1): // ASM-NEXT: { // ASM-NEXT: DIV, [SOUTH, RED], [#18] -> [$0] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) @@ -301,7 +403,7 @@ // ASM-NEXT: SEXT, [$0] -> [$0] (t=7, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [$0], [$1] (t=8, inv_iters=1) +// ASM-NEXT: GEP, [arg1], [$0] -> [$0], [$8] (t=8, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: LOAD, [$0] -> [$0] (t=9, inv_iters=1) @@ -310,6 +412,28 @@ // ASM-NEXT: ADD, [$0], [#1] -> [$0] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$1] (t=11, inv_iters=1) +// ASM-NEXT: STORE, [$0], [$8] (t=11, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: ADD, [SOUTH, RED], [#1] -> [$0], [$8] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [$0], [#20] -> [$0], [NORTH, RED], [$9] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$9] -> [NORTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [SOUTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM: PE(1,2): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [$8] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=5, inv_iters=0) +// ASM-NEXT: RETURN_VOID, [$8] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) -// ASM-EMPTY: diff --git a/test/e2e/relu/relu_kernel.mlir b/test/e2e/relu/relu_kernel.mlir index 5b81ada0..8fc05121 100644 --- a/test/e2e/relu/relu_kernel.mlir +++ b/test/e2e/relu/relu_kernel.mlir @@ -32,8 +32,7 @@ // // Check the mapped MLIR contains key operations with full statements. // RUN: FileCheck %s --input-file=%t-mapping.mlir -check-prefix=MAPPING -// MAPPING: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, i64 = dense<64> : vector<2xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i16 = dense<16> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { -// MAPPING-NEXT: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data @@ -68,11 +67,11 @@ // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 37 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 40 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 12 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 32 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 31 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 32 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 4 : i32}, {id = 31 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 36 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %33 -> %2 {dfg_id = 39 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %34 = "neura.data_mov"(%25) {dfg_id = 23 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 28 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %37 = "neura.data_mov"(%36) {dfg_id = 31 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: neura.return_void %37 : !neura.data {dfg_id = 35 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 3 : i32}]} @@ -237,6 +236,8 @@ // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg1" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: @@ -378,8 +379,6 @@ // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" // YAML-NEXT: id: 23 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 // ASM: # Compiled II: 5 // ASM: PE(1,0): @@ -415,7 +414,7 @@ // ASM-NEXT: } (idx_per_ii=2) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: GEP, [arg1], [$0] -> [WEST, RED] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=2, inv_iters=0) @@ -451,7 +450,7 @@ // ASM: PE(2,2): // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$16] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$9] -> [WEST, RED] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [EAST, RED], [SOUTH, RED], [$0] (t=1, inv_iters=0) @@ -460,18 +459,18 @@ // ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED], [$16] (t=3, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED], [$9] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0], [$16] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$16] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: NOT, [$0] -> [$0], [$9] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$9] -> [WEST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(3,2): // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GEP, [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: GEP, [arg0], [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM: PE(1,3): // ASM-NEXT: { diff --git a/test/e2e/spmv/spmv_kernel.mlir b/test/e2e/spmv/spmv_kernel.mlir index e9ddc751..e58fa206 100644 --- a/test/e2e/spmv/spmv_kernel.mlir +++ b/test/e2e/spmv/spmv_kernel.mlir @@ -22,333 +22,310 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 14 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 9 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 15 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 9 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 12 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %4 = "neura.icmp"(%3) <{cmpType = "sgt"}> {dfg_id = 14 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %5 = "neura.data_mov"(%4) {dfg_id = 16 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %6 = "neura.grant_once"(%5) {dfg_id = 18 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = "neura.data_mov"(%4) {dfg_id = 15 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 3000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 3000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 3000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 3000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 3000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 3000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 3000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 3000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 3000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %8 = "neura.not"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 19 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%6) {dfg_id = 22 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 26 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%2) {dfg_id = 13 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.data_mov"(%6) {dfg_id = 21 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 25 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%6) {dfg_id = 20 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 7 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 20 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 321 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 321 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 321 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 321 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 321 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 321 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.not"(%17) {dfg_id = 24 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %19 = "neura.data_mov"(%10) {dfg_id = 27 : i32, mapping_locs = [{id = 23 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = "neura.data_mov"(%18) {dfg_id = 28 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 352 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = neura.grant_predicate %19, %20 {dfg_id = 34 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%13) {dfg_id = 33 : i32, mapping_locs = [{id = 1001 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 1001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = neura.zext %22 {dfg_id = 36 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 42 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 1000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 1000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.and"(%24) {dfg_id = 46 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%13) {dfg_id = 32 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "ult"}> {dfg_id = 35 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 4 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%16) {dfg_id = 31 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 4002 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 4002 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 4002 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 45 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%16) {dfg_id = 30 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 0 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 12 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %4 = "neura.icmp"(%3) <{cmpType = "sgt"}> {dfg_id = 14 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %5 = "neura.data_mov"(%4) {dfg_id = 16 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %6 = "neura.grant_once"(%5) {dfg_id = 18 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = "neura.data_mov"(%4) {dfg_id = 15 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 304 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 304 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 304 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 304 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 304 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 304 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 304 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 304 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 304 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 304 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 304 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %8 = "neura.not"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 19 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%6) {dfg_id = 22 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 26 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%2) {dfg_id = 13 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.data_mov"(%6) {dfg_id = 21 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%6) {dfg_id = 20 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 23 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 360 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 360 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 360 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 360 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 360 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 360 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 360 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 360 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 360 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 360 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 360 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 360 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.not"(%17) {dfg_id = 24 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = "neura.data_mov"(%10) {dfg_id = 27 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = "neura.data_mov"(%18) {dfg_id = 28 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = neura.grant_predicate %19, %20 {dfg_id = 34 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%13) {dfg_id = 33 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = neura.zext %22 {dfg_id = 36 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 42 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.and"(%24) {dfg_id = 46 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%13) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "ult"}> {dfg_id = 35 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 4 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%16) {dfg_id = 31 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 1000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 1000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 1008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 45 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%16) {dfg_id = 30 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 11 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 9 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 4 : i32}, {id = 17 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 5 : i32}, {id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 6 : i32}, {id = 17 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 7 : i32}, {id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 8 : i32}, {id = 17 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 9 : i32}, {id = 17 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 10 : i32}, {id = 17 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 11 : i32}, {id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 44 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 38 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.not"(%34) {dfg_id = 43 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%23) {dfg_id = 41 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%35) {dfg_id = 48 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 38 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.not"(%34) {dfg_id = 43 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%23) {dfg_id = 41 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%35) {dfg_id = 48 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %38 = neura.grant_predicate %36, %37 {dfg_id = 54 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %39 = "neura.data_mov"(%16) {dfg_id = 29 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %40 = "neura.data_mov"(%35) {dfg_id = 47 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %39 = "neura.data_mov"(%16) {dfg_id = 29 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %40 = "neura.data_mov"(%35) {dfg_id = 47 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %41 = neura.grant_predicate %39, %40 {dfg_id = 53 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %42 = "neura.data_mov"(%38) {dfg_id = 59 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %43 = "neura.and"(%42) {dfg_id = 66 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 2147483644 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %44 = neura.reserve {dfg_id = 3 : i32} : !neura.data -// MAPPING-NEXT: %45 = "neura.data_mov"(%41) {dfg_id = 58 : i32, mapping_locs = [{id = 4004 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 6 : i32}, {id = 4004 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 7 : i32}, {id = 4004 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 8 : i32}, {id = 4004 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 9 : i32}, {id = 4004 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 10 : i32}, {id = 4004 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %45 = "neura.data_mov"(%41) {dfg_id = 58 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %46 = neura.phi_start %45, %44 {dfg_id = 65 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %47 = neura.reserve {dfg_id = 4 : i32} : !neura.data -// MAPPING-NEXT: %48 = "neura.data_mov"(%43) {dfg_id = 79 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %49 = neura.phi_start %48, %47 {dfg_id = 92 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %48 = "neura.data_mov"(%43) {dfg_id = 79 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %49 = neura.phi_start %48, %47 {dfg_id = 92 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %50 = neura.reserve {dfg_id = 5 : i32} : !neura.data // MAPPING-NEXT: %51 = "neura.data_mov"(%41) {dfg_id = 57 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %52 = neura.phi_start %51, %50 {dfg_id = 64 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %53 = neura.reserve {dfg_id = 6 : i32} : !neura.data // MAPPING-NEXT: %54 = "neura.data_mov"(%41) {dfg_id = 56 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %55 = neura.phi_start %54, %53 {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %56 = "neura.data_mov"(%55) {dfg_id = 75 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 20 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 31 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 290 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 290 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 290 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 290 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %57 = "neura.gep"(%56) <{operandSegmentSizes = array}> {dfg_id = 90 : i32, lhs_value = "%arg1", mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%57) {dfg_id = 107 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 26 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 12000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %59 = "neura.load"(%58) {dfg_id = 124 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %60 = "neura.data_mov"(%55) {dfg_id = 74 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 162 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %61 = "neura.gep"(%60) <{operandSegmentSizes = array}> {dfg_id = 89 : i32, lhs_value = "%arg2", mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %62 = "neura.data_mov"(%61) {dfg_id = 106 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %63 = "neura.load"(%62) {dfg_id = 123 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %64 = "neura.data_mov"(%63) {dfg_id = 137 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %65 = neura.sext %64 {dfg_id = 154 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%65) {dfg_id = 168 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 12000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.gep"(%66) <{operandSegmentSizes = array}> {dfg_id = 182 : i32, lhs_value = "%arg4", mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %68 = "neura.data_mov"(%67) {dfg_id = 197 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %69 = "neura.load"(%68) {dfg_id = 211 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 224 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %71 = "neura.data_mov"(%59) {dfg_id = 138 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.mul"(%70, %71) {dfg_id = 233 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %73 = "neura.data_mov"(%55) {dfg_id = 73 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 15 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 16 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %74 = "neura.gep"(%73) <{operandSegmentSizes = array}> {dfg_id = 88 : i32, lhs_value = "%arg3", mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %75 = "neura.data_mov"(%74) {dfg_id = 105 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 8000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %76 = "neura.load"(%75) {dfg_id = 122 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %77 = "neura.data_mov"(%76) {dfg_id = 136 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %78 = neura.sext %77 {dfg_id = 153 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %79 = "neura.data_mov"(%78) {dfg_id = 167 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = "neura.gep"(%79) <{operandSegmentSizes = array}> {dfg_id = 181 : i32, lhs_value = "%arg5", mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%80) {dfg_id = 196 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 12000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.load"(%81) {dfg_id = 210 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = "neura.data_mov"(%82) {dfg_id = 223 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %84 = "neura.data_mov"(%72) {dfg_id = 242 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 12001 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %85 = "neura.add"(%83, %84) {dfg_id = 251 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%85) {dfg_id = 260 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %87 = "neura.data_mov"(%80) {dfg_id = 195 : i32, mapping_locs = [{id = 418 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 40 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 12002 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 12002 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 12002 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 12002 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 270 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %88 = "neura.data_mov"(%55) {dfg_id = 72 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 192 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %89 = "neura.or"(%88) {dfg_id = 87 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 104 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 224 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 224 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %91 = "neura.gep"(%90) <{operandSegmentSizes = array}> {dfg_id = 121 : i32, lhs_value = "%arg1", mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %92 = "neura.data_mov"(%91) {dfg_id = 135 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 3002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 3002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 3002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %93 = "neura.load"(%92) {dfg_id = 152 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 103 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %95 = "neura.gep"(%94) <{operandSegmentSizes = array}> {dfg_id = 120 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %96 = "neura.data_mov"(%95) {dfg_id = 134 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %97 = "neura.load"(%96) {dfg_id = 151 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %98 = "neura.data_mov"(%97) {dfg_id = 165 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %99 = neura.sext %98 {dfg_id = 180 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 194 : i32, mapping_locs = [{id = 3001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 3001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 209 : i32, lhs_value = "%arg4", mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 222 : i32, mapping_locs = [{id = 3003 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 3003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 3003 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 3003 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %103 = "neura.load"(%102) {dfg_id = 232 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %104 = "neura.data_mov"(%103) {dfg_id = 241 : i32, mapping_locs = [{id = 3001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %105 = "neura.data_mov"(%93) {dfg_id = 166 : i32, mapping_locs = [{id = 3002 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 3002 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %106 = "neura.mul"(%104, %105) {dfg_id = 250 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %107 = "neura.data_mov"(%89) {dfg_id = 102 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %108 = "neura.gep"(%107) <{operandSegmentSizes = array}> {dfg_id = 119 : i32, lhs_value = "%arg3", mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %109 = "neura.data_mov"(%108) {dfg_id = 133 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 27 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %110 = "neura.load"(%109) {dfg_id = 150 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %111 = "neura.data_mov"(%110) {dfg_id = 164 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %112 = neura.sext %111 {dfg_id = 179 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 193 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %114 = "neura.gep"(%113) <{operandSegmentSizes = array}> {dfg_id = 208 : i32, lhs_value = "%arg5", mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 221 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 12001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 12001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = "neura.load"(%115) {dfg_id = 231 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %117 = "neura.data_mov"(%116) {dfg_id = 240 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 41 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 44 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %118 = "neura.data_mov"(%106) {dfg_id = 259 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 23 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 37 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %119 = "neura.add"(%117, %118) {dfg_id = 269 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 3 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %120 = "neura.data_mov"(%119) {dfg_id = 277 : i32, mapping_locs = [{id = 47 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 26 : i32}, {id = 36 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 27 : i32}, {id = 22 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 28 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %121 = "neura.data_mov"(%114) {dfg_id = 220 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 27 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 25 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 3 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 26 : i32}, {id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 27 : i32}, {id = 3001 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 28 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%120, %121) {dfg_id = 286 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 29 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %122 = "neura.data_mov"(%55) {dfg_id = 71 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %123 = "neura.or"(%122) {dfg_id = 86 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 2 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %124 = "neura.data_mov"(%123) {dfg_id = 101 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 30 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %125 = "neura.gep"(%124) <{operandSegmentSizes = array}> {dfg_id = 118 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 132 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 12001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 12001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 12001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %127 = "neura.load"(%126) {dfg_id = 149 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %128 = "neura.data_mov"(%123) {dfg_id = 100 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %129 = "neura.gep"(%128) <{operandSegmentSizes = array}> {dfg_id = 117 : i32, lhs_value = "%arg2", mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %130 = "neura.data_mov"(%129) {dfg_id = 131 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 148 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %132 = "neura.data_mov"(%131) {dfg_id = 162 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %133 = neura.sext %132 {dfg_id = 178 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %134 = "neura.data_mov"(%133) {dfg_id = 192 : i32, mapping_locs = [{id = 41 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %135 = "neura.gep"(%134) <{operandSegmentSizes = array}> {dfg_id = 207 : i32, lhs_value = "%arg4", mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %136 = "neura.data_mov"(%135) {dfg_id = 219 : i32, mapping_locs = [{id = 45 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %137 = "neura.load"(%136) {dfg_id = 230 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %138 = "neura.data_mov"(%137) {dfg_id = 239 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %139 = "neura.data_mov"(%127) {dfg_id = 163 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 25 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 11 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %140 = "neura.mul"(%138, %139) {dfg_id = 249 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %141 = "neura.data_mov"(%123) {dfg_id = 99 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %142 = "neura.gep"(%141) <{operandSegmentSizes = array}> {dfg_id = 116 : i32, lhs_value = "%arg3", mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %143 = "neura.data_mov"(%142) {dfg_id = 130 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 147 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %145 = "neura.data_mov"(%144) {dfg_id = 161 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %146 = neura.sext %145 {dfg_id = 177 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %147 = "neura.data_mov"(%146) {dfg_id = 191 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 206 : i32, lhs_value = "%arg5", mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 218 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 229 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %151 = "neura.data_mov"(%150) {dfg_id = 238 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 3 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %152 = "neura.data_mov"(%140) {dfg_id = 258 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 24 : i32}, {id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %153 = "neura.add"(%151, %152) {dfg_id = 268 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %154 = "neura.data_mov"(%153) {dfg_id = 276 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 26 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %155 = "neura.data_mov"(%148) {dfg_id = 217 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 11 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 1001 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 1001 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}, {id = 1001 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%154, %155) {dfg_id = 285 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 27 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %156 = "neura.data_mov"(%55) {dfg_id = 70 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %157 = "neura.or"(%156) {dfg_id = 85 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %158 = "neura.data_mov"(%157) {dfg_id = 98 : i32, mapping_locs = [{id = 291 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 28 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %159 = "neura.gep"(%158) <{operandSegmentSizes = array}> {dfg_id = 115 : i32, lhs_value = "%arg1", mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %160 = "neura.data_mov"(%159) {dfg_id = 129 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %161 = "neura.load"(%160) {dfg_id = 146 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %162 = "neura.data_mov"(%157) {dfg_id = 97 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %163 = "neura.gep"(%162) <{operandSegmentSizes = array}> {dfg_id = 114 : i32, lhs_value = "%arg2", mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %164 = "neura.data_mov"(%163) {dfg_id = 128 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 19 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %165 = "neura.load"(%164) {dfg_id = 145 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %166 = "neura.data_mov"(%165) {dfg_id = 159 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %167 = neura.sext %166 {dfg_id = 176 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %168 = "neura.data_mov"(%167) {dfg_id = 190 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %169 = "neura.gep"(%168) <{operandSegmentSizes = array}> {dfg_id = 205 : i32, lhs_value = "%arg4", mapping_locs = [{id = 7 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %170 = "neura.data_mov"(%169) {dfg_id = 216 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %171 = "neura.load"(%170) {dfg_id = 228 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 237 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 2000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 160 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 2001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 2001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 2001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %174 = "neura.mul"(%172, %173) {dfg_id = 248 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %175 = "neura.data_mov"(%157) {dfg_id = 96 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %176 = "neura.gep"(%175) <{operandSegmentSizes = array}> {dfg_id = 113 : i32, lhs_value = "%arg3", mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %177 = "neura.data_mov"(%176) {dfg_id = 127 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %178 = "neura.load"(%177) {dfg_id = 144 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %179 = "neura.data_mov"(%178) {dfg_id = 158 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 416 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %180 = neura.sext %179 {dfg_id = 175 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 189 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %182 = "neura.gep"(%181) <{operandSegmentSizes = array}> {dfg_id = 204 : i32, lhs_value = "%arg5", mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %183 = "neura.data_mov"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 8002 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 8002 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %184 = "neura.load"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %185 = "neura.data_mov"(%184) {dfg_id = 236 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %186 = "neura.data_mov"(%174) {dfg_id = 257 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 20 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %187 = "neura.add"(%185, %186) {dfg_id = 267 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %188 = "neura.data_mov"(%187) {dfg_id = 275 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 19 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 26 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %189 = "neura.data_mov"(%182) {dfg_id = 214 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 29 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 15 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 2001 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 2001 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 2001 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}, {id = 2001 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%188, %189) {dfg_id = 284 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 27 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %190 = "neura.data_mov"(%55) {dfg_id = 69 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %191 = "neura.add"(%190) {dfg_id = 84 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %56 = "neura.data_mov"(%55) {dfg_id = 75 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 20 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %57 = "neura.gep"(%56) <{operandSegmentSizes = array}> {dfg_id = 90 : i32, lhs_value = "%arg1", mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%57) {dfg_id = 107 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 19 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %59 = "neura.load"(%58) {dfg_id = 124 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %60 = "neura.data_mov"(%55) {dfg_id = 74 : i32, mapping_locs = [{id = 184 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 184 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 184 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 184 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 184 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 184 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %61 = "neura.gep"(%60) <{operandSegmentSizes = array}> {dfg_id = 89 : i32, lhs_value = "%arg2", mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %62 = "neura.data_mov"(%61) {dfg_id = 106 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %63 = "neura.load"(%62) {dfg_id = 123 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %64 = "neura.data_mov"(%63) {dfg_id = 137 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %65 = neura.sext %64 {dfg_id = 154 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%65) {dfg_id = 168 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.gep"(%66) <{operandSegmentSizes = array}> {dfg_id = 182 : i32, lhs_value = "%arg4", mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %68 = "neura.data_mov"(%67) {dfg_id = 197 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %69 = "neura.load"(%68) {dfg_id = 211 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 224 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %71 = "neura.data_mov"(%59) {dfg_id = 138 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.mul"(%70, %71) {dfg_id = 233 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %73 = "neura.data_mov"(%55) {dfg_id = 73 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4024 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 4024 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 4024 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 4024 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 4024 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 4024 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %74 = "neura.gep"(%73) <{operandSegmentSizes = array}> {dfg_id = 88 : i32, lhs_value = "%arg3", mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %75 = "neura.data_mov"(%74) {dfg_id = 105 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %76 = "neura.load"(%75) {dfg_id = 122 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %77 = "neura.data_mov"(%76) {dfg_id = 136 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %78 = neura.sext %77 {dfg_id = 153 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %79 = "neura.data_mov"(%78) {dfg_id = 167 : i32, mapping_locs = [{id = 12001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 12001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = "neura.gep"(%79) <{operandSegmentSizes = array}> {dfg_id = 181 : i32, lhs_value = "%arg5", mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%80) {dfg_id = 196 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.load"(%81) {dfg_id = 210 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = "neura.data_mov"(%82) {dfg_id = 223 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %84 = "neura.data_mov"(%72) {dfg_id = 242 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %85 = "neura.add"(%83, %84) {dfg_id = 251 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%85) {dfg_id = 260 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 26 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %87 = "neura.data_mov"(%80) {dfg_id = 195 : i32, mapping_locs = [{id = 12016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 12016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 12016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 12016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 12016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 12016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 12016 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 270 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %88 = "neura.data_mov"(%55) {dfg_id = 72 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %89 = "neura.or"(%88) {dfg_id = 87 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 104 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 416 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %91 = "neura.gep"(%90) <{operandSegmentSizes = array}> {dfg_id = 121 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %92 = "neura.data_mov"(%91) {dfg_id = 135 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 12000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %93 = "neura.load"(%92) {dfg_id = 152 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 103 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %95 = "neura.gep"(%94) <{operandSegmentSizes = array}> {dfg_id = 120 : i32, lhs_value = "%arg2", mapping_locs = [{id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %96 = "neura.data_mov"(%95) {dfg_id = 134 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %97 = "neura.load"(%96) {dfg_id = 151 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %98 = "neura.data_mov"(%97) {dfg_id = 165 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %99 = neura.sext %98 {dfg_id = 180 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 194 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 12000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 209 : i32, lhs_value = "%arg4", mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 222 : i32, mapping_locs = [{id = 12008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 12008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 12008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %103 = "neura.load"(%102) {dfg_id = 232 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %104 = "neura.data_mov"(%103) {dfg_id = 241 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 12000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %105 = "neura.data_mov"(%93) {dfg_id = 166 : i32, mapping_locs = [{id = 12009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 12009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 12009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %106 = "neura.mul"(%104, %105) {dfg_id = 250 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %107 = "neura.data_mov"(%89) {dfg_id = 102 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %108 = "neura.gep"(%107) <{operandSegmentSizes = array}> {dfg_id = 119 : i32, lhs_value = "%arg3", mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %109 = "neura.data_mov"(%108) {dfg_id = 133 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %110 = "neura.load"(%109) {dfg_id = 150 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %111 = "neura.data_mov"(%110) {dfg_id = 164 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %112 = neura.sext %111 {dfg_id = 179 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 193 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %114 = "neura.gep"(%113) <{operandSegmentSizes = array}> {dfg_id = 208 : i32, lhs_value = "%arg5", mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 221 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 8016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 8016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = "neura.load"(%115) {dfg_id = 231 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %117 = "neura.data_mov"(%116) {dfg_id = 240 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %118 = "neura.data_mov"(%106) {dfg_id = 259 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %119 = "neura.add"(%117, %118) {dfg_id = 269 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %120 = "neura.data_mov"(%119) {dfg_id = 277 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %121 = "neura.data_mov"(%114) {dfg_id = 220 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8017 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 8017 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}, {id = 8017 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 23 : i32}, {id = 8017 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 24 : i32}, {id = 8017 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%120, %121) {dfg_id = 286 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %122 = "neura.data_mov"(%55) {dfg_id = 71 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %123 = "neura.or"(%122) {dfg_id = 86 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 2 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %124 = "neura.data_mov"(%123) {dfg_id = 101 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 23 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 352 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 352 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %125 = "neura.gep"(%124) <{operandSegmentSizes = array}> {dfg_id = 118 : i32, lhs_value = "%arg1", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 132 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %127 = "neura.load"(%126) {dfg_id = 149 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %128 = "neura.data_mov"(%123) {dfg_id = 100 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %129 = "neura.gep"(%128) <{operandSegmentSizes = array}> {dfg_id = 117 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %130 = "neura.data_mov"(%129) {dfg_id = 131 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 148 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %132 = "neura.data_mov"(%131) {dfg_id = 162 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %133 = neura.sext %132 {dfg_id = 178 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %134 = "neura.data_mov"(%133) {dfg_id = 192 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %135 = "neura.gep"(%134) <{operandSegmentSizes = array}> {dfg_id = 207 : i32, lhs_value = "%arg4", mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %136 = "neura.data_mov"(%135) {dfg_id = 219 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %137 = "neura.load"(%136) {dfg_id = 230 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %138 = "neura.data_mov"(%137) {dfg_id = 239 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %139 = "neura.data_mov"(%127) {dfg_id = 163 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %140 = "neura.mul"(%138, %139) {dfg_id = 249 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %141 = "neura.data_mov"(%123) {dfg_id = 99 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %142 = "neura.gep"(%141) <{operandSegmentSizes = array}> {dfg_id = 116 : i32, lhs_value = "%arg3", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %143 = "neura.data_mov"(%142) {dfg_id = 130 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 22 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 147 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %145 = "neura.data_mov"(%144) {dfg_id = 161 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %146 = neura.sext %145 {dfg_id = 177 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %147 = "neura.data_mov"(%146) {dfg_id = 191 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 206 : i32, lhs_value = "%arg5", mapping_locs = [{id = 7 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 218 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 2016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 229 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %151 = "neura.data_mov"(%150) {dfg_id = 238 : i32, mapping_locs = [{id = 2016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 2016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %152 = "neura.data_mov"(%140) {dfg_id = 258 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 2024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 2024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %153 = "neura.add"(%151, %152) {dfg_id = 268 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %154 = "neura.data_mov"(%153) {dfg_id = 276 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %155 = "neura.data_mov"(%148) {dfg_id = 217 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 21 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 19 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 2008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%154, %155) {dfg_id = 285 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %156 = "neura.data_mov"(%55) {dfg_id = 70 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 1009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 1009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 1009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %157 = "neura.or"(%156) {dfg_id = 85 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %158 = "neura.data_mov"(%157) {dfg_id = 98 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 14 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 18 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %159 = "neura.gep"(%158) <{operandSegmentSizes = array}> {dfg_id = 115 : i32, lhs_value = "%arg1", mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %160 = "neura.data_mov"(%159) {dfg_id = 129 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 3008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 3008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %161 = "neura.load"(%160) {dfg_id = 146 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %162 = "neura.data_mov"(%157) {dfg_id = 97 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %163 = "neura.gep"(%162) <{operandSegmentSizes = array}> {dfg_id = 114 : i32, lhs_value = "%arg2", mapping_locs = [{id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %164 = "neura.data_mov"(%163) {dfg_id = 128 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %165 = "neura.load"(%164) {dfg_id = 145 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %166 = "neura.data_mov"(%165) {dfg_id = 159 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %167 = neura.sext %166 {dfg_id = 176 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %168 = "neura.data_mov"(%167) {dfg_id = 190 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %169 = "neura.gep"(%168) <{operandSegmentSizes = array}> {dfg_id = 205 : i32, lhs_value = "%arg4", mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %170 = "neura.data_mov"(%169) {dfg_id = 216 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %171 = "neura.load"(%170) {dfg_id = 228 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 237 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 160 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %174 = "neura.mul"(%172, %173) {dfg_id = 248 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %175 = "neura.data_mov"(%157) {dfg_id = 96 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %176 = "neura.gep"(%175) <{operandSegmentSizes = array}> {dfg_id = 113 : i32, lhs_value = "%arg3", mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %177 = "neura.data_mov"(%176) {dfg_id = 127 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %178 = "neura.load"(%177) {dfg_id = 144 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %179 = "neura.data_mov"(%178) {dfg_id = 158 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %180 = neura.sext %179 {dfg_id = 175 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 189 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %182 = "neura.gep"(%181) <{operandSegmentSizes = array}> {dfg_id = 204 : i32, lhs_value = "%arg5", mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %183 = "neura.data_mov"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 3009 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 3009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 3009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 3009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %184 = "neura.load"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %185 = "neura.data_mov"(%184) {dfg_id = 236 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %186 = "neura.data_mov"(%174) {dfg_id = 257 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 3008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %187 = "neura.add"(%185, %186) {dfg_id = 267 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %188 = "neura.data_mov"(%187) {dfg_id = 275 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %189 = "neura.data_mov"(%182) {dfg_id = 214 : i32, mapping_locs = [{id = 3016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 3016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 3016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 3016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 3016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 3016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%188, %189) {dfg_id = 284 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %190 = "neura.data_mov"(%55) {dfg_id = 69 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %191 = "neura.add"(%190) {dfg_id = 84 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %192 = "neura.data_mov"(%52) {dfg_id = 76 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %193 = "neura.add"(%192) {dfg_id = 91 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %194 = "neura.data_mov"(%193) {dfg_id = 109 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %195 = "neura.data_mov"(%49) {dfg_id = 111 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %196 = "neura.icmp"(%194, %195) <{cmpType = "eq"}> {dfg_id = 125 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %197 = "neura.data_mov"(%196) {dfg_id = 141 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %198 = "neura.not"(%197) {dfg_id = 157 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %199 = "neura.data_mov"(%191) {dfg_id = 95 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 33 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 193 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 193 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %200 = "neura.data_mov"(%198) {dfg_id = 174 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 3 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 7 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 194 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 194 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 194 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 194 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 194 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 194 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 194 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 194 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 188 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %201 -> %53 {dfg_id = 203 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %202 = "neura.data_mov"(%193) {dfg_id = 108 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 17 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %203 = "neura.data_mov"(%198) {dfg_id = 173 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %204 = neura.grant_predicate %202, %203 {dfg_id = 187 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %204 -> %50 {dfg_id = 202 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 160 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %205 = "neura.data_mov"(%49) {dfg_id = 110 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %206 = "neura.data_mov"(%198) {dfg_id = 172 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %207 = neura.grant_predicate %205, %206 {dfg_id = 186 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %207 -> %47 {dfg_id = 201 : i32, mapping_locs = [{id = 4003 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 4003 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 4003 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 4003 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 4003 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 4003 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 4003 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 4003 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 4003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 4003 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 4003 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %208 = "neura.data_mov"(%46) {dfg_id = 78 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 18 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 225 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 225 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 225 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 225 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 225 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 225 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = "neura.data_mov"(%198) {dfg_id = 171 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 18 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 226 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 226 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 226 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 226 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 226 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 226 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 226 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 226 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 185 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %210 -> %44 {dfg_id = 200 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 19 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %211 = "neura.data_mov"(%191) {dfg_id = 94 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %212 = "neura.data_mov"(%196) {dfg_id = 140 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 156 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %214 = "neura.data_mov"(%46) {dfg_id = 77 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %215 = "neura.data_mov"(%196) {dfg_id = 139 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 17 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 155 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %217 = "neura.data_mov"(%33) {dfg_id = 49 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %218 = "neura.data_mov"(%216) {dfg_id = 169 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %219 = "neura.phi"(%217, %218) {dfg_id = 183 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %220 = "neura.data_mov"(%30) {dfg_id = 50 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %221 = "neura.data_mov"(%213) {dfg_id = 170 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %222 = "neura.phi"(%220, %221) {dfg_id = 184 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %223 = "neura.data_mov"(%25) {dfg_id = 52 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %224 = "neura.icmp"(%223) <{cmpType = "eq"}> {dfg_id = 55 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %225 = "neura.data_mov"(%224) {dfg_id = 61 : i32, mapping_locs = [{id = 1002 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 1002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 1002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 1002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 1002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 1002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 1002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 1002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 1002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 1002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %226 = "neura.data_mov"(%224) {dfg_id = 62 : i32, mapping_locs = [{id = 1003 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 1003 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 1003 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 1003 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 1003 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 1003 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 1003 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 1003 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 1003 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 1003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 68 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %228 = "neura.data_mov"(%224) {dfg_id = 60 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %229 = "neura.not"(%228) {dfg_id = 67 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %230 = "neura.data_mov"(%222) {dfg_id = 199 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %231 = "neura.data_mov"(%229) {dfg_id = 82 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 213 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %233 = "neura.data_mov"(%219) {dfg_id = 198 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %234 = "neura.data_mov"(%229) {dfg_id = 81 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 162 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 162 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 162 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 212 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %236 = "neura.data_mov"(%25) {dfg_id = 51 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 2 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %237 = "neura.data_mov"(%229) {dfg_id = 80 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 3 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %238 = neura.grant_predicate %236, %237 {dfg_id = 93 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %194 = "neura.data_mov"(%193) {dfg_id = 109 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %195 = "neura.data_mov"(%49) {dfg_id = 111 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %196 = "neura.icmp"(%194, %195) <{cmpType = "eq"}> {dfg_id = 125 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %197 = "neura.data_mov"(%196) {dfg_id = 141 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %198 = "neura.not"(%197) {dfg_id = 157 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %199 = "neura.data_mov"(%191) {dfg_id = 95 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 312 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 312 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 312 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 312 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 312 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 312 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 312 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}, {id = 312 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 312 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 312 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 312 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %200 = "neura.data_mov"(%198) {dfg_id = 174 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 313 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 12 : i32}, {id = 313 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 13 : i32}, {id = 313 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 14 : i32}, {id = 313 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 15 : i32}, {id = 313 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 16 : i32}, {id = 313 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 17 : i32}, {id = 313 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 18 : i32}, {id = 313 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 19 : i32}, {id = 313 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 188 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %201 -> %53 {dfg_id = 203 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %202 = "neura.data_mov"(%193) {dfg_id = 108 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %203 = "neura.data_mov"(%198) {dfg_id = 173 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %204 = neura.grant_predicate %202, %203 {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %204 -> %50 {dfg_id = 202 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 176 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 176 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 176 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 176 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 176 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %205 = "neura.data_mov"(%49) {dfg_id = 110 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %206 = "neura.data_mov"(%198) {dfg_id = 172 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %207 = neura.grant_predicate %205, %206 {dfg_id = 186 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %207 -> %47 {dfg_id = 201 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 16 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %208 = "neura.data_mov"(%46) {dfg_id = 78 : i32, mapping_locs = [{id = 4017 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 4017 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 4017 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 4017 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 4017 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}, {id = 4017 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}, {id = 4017 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 4017 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 4017 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 4017 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 4017 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = "neura.data_mov"(%198) {dfg_id = 171 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4026 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 12 : i32}, {id = 4026 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 13 : i32}, {id = 4026 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 14 : i32}, {id = 4026 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 15 : i32}, {id = 4026 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 16 : i32}, {id = 4026 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 17 : i32}, {id = 4026 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 18 : i32}, {id = 4026 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 19 : i32}, {id = 4026 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 20 : i32}, {id = 4026 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 21 : i32}, {id = 4026 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 185 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %210 -> %44 {dfg_id = 200 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}, {id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}, {id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %211 = "neura.data_mov"(%191) {dfg_id = 94 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %212 = "neura.data_mov"(%196) {dfg_id = 140 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 156 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %214 = "neura.data_mov"(%46) {dfg_id = 77 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %215 = "neura.data_mov"(%196) {dfg_id = 139 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 4016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 155 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %217 = "neura.data_mov"(%33) {dfg_id = 49 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %218 = "neura.data_mov"(%216) {dfg_id = 169 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %219 = "neura.phi"(%217, %218) {dfg_id = 183 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %220 = "neura.data_mov"(%30) {dfg_id = 50 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %221 = "neura.data_mov"(%213) {dfg_id = 170 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %222 = "neura.phi"(%220, %221) {dfg_id = 184 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %223 = "neura.data_mov"(%25) {dfg_id = 52 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %224 = "neura.icmp"(%223) <{cmpType = "eq"}> {dfg_id = 55 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %225 = "neura.data_mov"(%224) {dfg_id = 61 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 1016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 1016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 1016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 1016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 1016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 1016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 1016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 1016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 1016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 1016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 1016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %226 = "neura.data_mov"(%224) {dfg_id = 62 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1017 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 1017 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 1017 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 1017 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 1017 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}, {id = 1017 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}, {id = 1017 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 1017 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 1017 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 1017 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 68 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %228 = "neura.data_mov"(%224) {dfg_id = 60 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %229 = "neura.not"(%228) {dfg_id = 67 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %230 = "neura.data_mov"(%222) {dfg_id = 199 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %231 = "neura.data_mov"(%229) {dfg_id = 82 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 213 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %233 = "neura.data_mov"(%219) {dfg_id = 198 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %234 = "neura.data_mov"(%229) {dfg_id = 81 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 212 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %236 = "neura.data_mov"(%25) {dfg_id = 51 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4025 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 10 : i32}, {id = 4025 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 11 : i32}, {id = 4025 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 12 : i32}, {id = 4025 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 13 : i32}, {id = 4025 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 14 : i32}, {id = 4025 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 15 : i32}, {id = 4025 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %237 = "neura.data_mov"(%229) {dfg_id = 80 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %238 = neura.grant_predicate %236, %237 {dfg_id = 93 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %239 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %240 = "neura.data_mov"(%238) {dfg_id = 112 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %241 = neura.phi_start %240, %239 {dfg_id = 126 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %240 = "neura.data_mov"(%238) {dfg_id = 112 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %241 = neura.phi_start %240, %239 {dfg_id = 126 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %242 = neura.reserve {dfg_id = 8 : i32} : !neura.data -// MAPPING-NEXT: %243 = "neura.data_mov"(%235) {dfg_id = 225 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %244 = neura.phi_start %243, %242 {dfg_id = 234 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %243 = "neura.data_mov"(%235) {dfg_id = 225 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %244 = neura.phi_start %243, %242 {dfg_id = 234 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %245 = neura.reserve {dfg_id = 9 : i32} : !neura.data -// MAPPING-NEXT: %246 = "neura.data_mov"(%232) {dfg_id = 226 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %247 = neura.phi_start %246, %245 {dfg_id = 235 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %248 = "neura.data_mov"(%247) {dfg_id = 247 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 28 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 32 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %249 = "neura.gep"(%248) <{operandSegmentSizes = array}> {dfg_id = 256 : i32, lhs_value = "%arg1", mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %250 = "neura.data_mov"(%249) {dfg_id = 266 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 29 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 15 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %251 = "neura.load"(%250) {dfg_id = 274 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %252 = "neura.data_mov"(%247) {dfg_id = 246 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %253 = "neura.gep"(%252) <{operandSegmentSizes = array}> {dfg_id = 255 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %254 = "neura.data_mov"(%253) {dfg_id = 265 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %255 = "neura.load"(%254) {dfg_id = 273 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %256 = "neura.data_mov"(%255) {dfg_id = 282 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %257 = neura.sext %256 {dfg_id = 290 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %258 = "neura.data_mov"(%257) {dfg_id = 296 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %259 = "neura.gep"(%258) <{operandSegmentSizes = array}> {dfg_id = 302 : i32, lhs_value = "%arg4", mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %260 = "neura.data_mov"(%259) {dfg_id = 309 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 19 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %261 = "neura.load"(%260) {dfg_id = 312 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %262 = "neura.data_mov"(%261) {dfg_id = 314 : i32, mapping_locs = [{id = 2002 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 2002 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %263 = "neura.data_mov"(%251) {dfg_id = 283 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 2003 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 2003 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %264 = "neura.mul"(%262, %263) {dfg_id = 315 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %265 = "neura.data_mov"(%247) {dfg_id = 245 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 14 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %266 = "neura.gep"(%265) <{operandSegmentSizes = array}> {dfg_id = 254 : i32, lhs_value = "%arg3", mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %267 = "neura.data_mov"(%266) {dfg_id = 264 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 19 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %268 = "neura.load"(%267) {dfg_id = 272 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %269 = "neura.data_mov"(%268) {dfg_id = 281 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %270 = neura.sext %269 {dfg_id = 289 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %271 = "neura.data_mov"(%270) {dfg_id = 295 : i32, mapping_locs = [{id = 3001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %272 = "neura.gep"(%271) <{operandSegmentSizes = array}> {dfg_id = 301 : i32, lhs_value = "%arg5", mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %273 = "neura.data_mov"(%272) {dfg_id = 308 : i32, mapping_locs = [{id = 3004 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 20 : i32}, {id = 3004 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 21 : i32}, {id = 3004 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 22 : i32}, {id = 3004 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %274 = "neura.load"(%273) {dfg_id = 311 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %275 = "neura.data_mov"(%274) {dfg_id = 313 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %276 = "neura.data_mov"(%264) {dfg_id = 316 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %277 = "neura.add"(%275, %276) {dfg_id = 317 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %278 = "neura.data_mov"(%277) {dfg_id = 318 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %279 = "neura.data_mov"(%272) {dfg_id = 307 : i32, mapping_locs = [{id = 3005 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 20 : i32}, {id = 3005 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 21 : i32}, {id = 3005 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 22 : i32}, {id = 3005 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 23 : i32}, {id = 3005 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 24 : i32}, {id = 3005 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%278, %279) {dfg_id = 319 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %280 = "neura.data_mov"(%247) {dfg_id = 244 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %281 = "neura.add"(%280) {dfg_id = 253 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %282 = "neura.data_mov"(%244) {dfg_id = 243 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %283 = "neura.add"(%282) {dfg_id = 252 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %284 = "neura.data_mov"(%283) {dfg_id = 262 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %285 = "neura.data_mov"(%241) {dfg_id = 143 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %286 = "neura.icmp"(%284, %285) <{cmpType = "eq"}> {dfg_id = 271 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %287 = "neura.data_mov"(%286) {dfg_id = 280 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %288 = "neura.not"(%287) {dfg_id = 288 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %289 = "neura.data_mov"(%281) {dfg_id = 263 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 30 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 417 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 417 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 417 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 417 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 417 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %290 = "neura.data_mov"(%288) {dfg_id = 294 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 30 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %291 = neura.grant_predicate %289, %290 {dfg_id = 300 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %291 -> %245 {dfg_id = 306 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 29 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 163 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 163 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 163 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %292 = "neura.data_mov"(%283) {dfg_id = 261 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 416 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 416 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 416 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %293 = "neura.data_mov"(%288) {dfg_id = 293 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %294 = neura.grant_predicate %292, %293 {dfg_id = 299 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %294 -> %242 {dfg_id = 305 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 29 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 164 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 24 : i32}, {id = 164 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 25 : i32}, {id = 164 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 26 : i32}, {id = 164 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 27 : i32}, {id = 164 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 28 : i32}, {id = 164 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 29 : i32}, {id = 164 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 30 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %295 = "neura.data_mov"(%241) {dfg_id = 142 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 24 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 28 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %296 = "neura.data_mov"(%288) {dfg_id = 292 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %297 = neura.grant_predicate %295, %296 {dfg_id = 298 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %297 -> %239 {dfg_id = 304 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 25 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 4005 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 25 : i32}, {id = 4005 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 26 : i32}, {id = 4005 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 27 : i32}, {id = 4005 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 28 : i32}, {id = 4005 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 29 : i32}, {id = 4005 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 30 : i32}, {id = 4005 : i32, index_per_ii = 3 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %298 = "neura.data_mov"(%286) {dfg_id = 278 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 289 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %299 = "neura.data_mov"(%286) {dfg_id = 279 : i32, mapping_locs = [{id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %300 = neura.grant_predicate %298, %299 {dfg_id = 287 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %301 = "neura.data_mov"(%21) {dfg_id = 37 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 322 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 322 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %302 = "neura.data_mov"(%227) {dfg_id = 83 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 7 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 20 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %303 = "neura.data_mov"(%300) {dfg_id = 291 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %304 = "neura.phi"(%301, %302, %303) {dfg_id = 297 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %305 = "neura.data_mov"(%304) {dfg_id = 303 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %305 : !neura.data {dfg_id = 310 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 3 : i32, y = 2 : i32}]} -// MAPPING-NEXT: neura.yield {dfg_id = 10 : i32} -// MAPPING-NEXT: } +// MAPPING-NEXT: %246 = "neura.data_mov"(%232) {dfg_id = 226 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %247 = neura.phi_start %246, %245 {dfg_id = 235 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %248 = "neura.data_mov"(%247) {dfg_id = 247 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 30 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %249 = "neura.gep"(%248) <{operandSegmentSizes = array}> {dfg_id = 256 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %250 = "neura.data_mov"(%249) {dfg_id = 266 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 12001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 12001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 12001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %251 = "neura.load"(%250) {dfg_id = 274 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %252 = "neura.data_mov"(%247) {dfg_id = 246 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %253 = "neura.gep"(%252) <{operandSegmentSizes = array}> {dfg_id = 255 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %254 = "neura.data_mov"(%253) {dfg_id = 265 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %255 = "neura.load"(%254) {dfg_id = 273 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %256 = "neura.data_mov"(%255) {dfg_id = 282 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %257 = neura.sext %256 {dfg_id = 290 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %258 = "neura.data_mov"(%257) {dfg_id = 296 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %259 = "neura.gep"(%258) <{operandSegmentSizes = array}> {dfg_id = 302 : i32, lhs_value = "%arg4", mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %260 = "neura.data_mov"(%259) {dfg_id = 309 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %261 = "neura.load"(%260) {dfg_id = 312 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %262 = "neura.data_mov"(%261) {dfg_id = 314 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %263 = "neura.data_mov"(%251) {dfg_id = 283 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %264 = "neura.mul"(%262, %263) {dfg_id = 315 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %265 = "neura.data_mov"(%247) {dfg_id = 245 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %266 = "neura.gep"(%265) <{operandSegmentSizes = array}> {dfg_id = 254 : i32, lhs_value = "%arg3", mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %267 = "neura.data_mov"(%266) {dfg_id = 264 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %268 = "neura.load"(%267) {dfg_id = 272 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %269 = "neura.data_mov"(%268) {dfg_id = 281 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %270 = neura.sext %269 {dfg_id = 289 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %271 = "neura.data_mov"(%270) {dfg_id = 295 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %272 = "neura.gep"(%271) <{operandSegmentSizes = array}> {dfg_id = 301 : i32, lhs_value = "%arg5", mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %273 = "neura.data_mov"(%272) {dfg_id = 308 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 12008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 12008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 12008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %274 = "neura.load"(%273) {dfg_id = 311 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %275 = "neura.data_mov"(%274) {dfg_id = 313 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %276 = "neura.data_mov"(%264) {dfg_id = 316 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %277 = "neura.add"(%275, %276) {dfg_id = 317 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %278 = "neura.data_mov"(%277) {dfg_id = 318 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %279 = "neura.data_mov"(%272) {dfg_id = 307 : i32, mapping_locs = [{id = 8024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}, {id = 8024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 8024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 8024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 8024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 8024 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}, {id = 8024 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%278, %279) {dfg_id = 319 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 27 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %280 = "neura.data_mov"(%247) {dfg_id = 244 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %281 = "neura.add"(%280) {dfg_id = 253 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %282 = "neura.data_mov"(%244) {dfg_id = 243 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %283 = "neura.add"(%282) {dfg_id = 252 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %284 = "neura.data_mov"(%283) {dfg_id = 262 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %285 = "neura.data_mov"(%241) {dfg_id = 143 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %286 = "neura.icmp"(%284, %285) <{cmpType = "eq"}> {dfg_id = 271 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %287 = "neura.data_mov"(%286) {dfg_id = 280 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %288 = "neura.not"(%287) {dfg_id = 288 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 14 +// YAML-NEXT: compiled_ii: 15 // YAML-NEXT: cores: // YAML-NEXT: - column: 0 // YAML-NEXT: row: 0 @@ -358,636 +335,119 @@ // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SGT" -// YAML-NEXT: id: 14 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 18 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 200000 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 93 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 54 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 30 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "AND" -// YAML-NEXT: id: 66 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#2147483644" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 39 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 238 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 239 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2170002 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 51 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 249 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 2000004 -// YAML-NEXT: time_step: 25 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 80 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 268 -// YAML-NEXT: time_step: 26 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 44 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 116 +// YAML-NEXT: id: 212 // YAML-NEXT: time_step: 15 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 150001 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 26 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_ULT" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 36 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 200001 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 390002 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 68 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 274 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2390001 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2140002 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "AND" -// YAML-NEXT: id: 46 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 740001 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 55 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 730001 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 217 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 2000003 -// YAML-NEXT: time_step: 24 +// YAML-NEXT: id: 128 +// YAML-NEXT: time_step: 15 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 67 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1740001 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 810000 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2200005 -// YAML-NEXT: time_step: 26 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 285 -// YAML-NEXT: time_step: 27 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 151 -// YAML-NEXT: time_step: 15 +// YAML-NEXT: id: 145 +// YAML-NEXT: time_step: 16 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 145 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "arg0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 150002 -// YAML-NEXT: time_step: 3 +// YAML-NEXT: id: 150001 +// YAML-NEXT: time_step: 2 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 273 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 26 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 272 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "ICMP_ULT" +// YAML-NEXT: id: 35 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#4" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$17" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 390001 +// YAML-NEXT: - opcode: "ZEXT" +// YAML-NEXT: id: 36 // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 146 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 6 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 200002 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 54 // YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 228 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: @@ -995,290 +455,465 @@ // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 7 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 230 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "AND" +// YAML-NEXT: id: 66 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#2147483644" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 830001 -// YAML-NEXT: time_step: 21 +// YAML-NEXT: id: 3140001 +// YAML-NEXT: time_step: 22 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 8 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 312 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 92 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 283 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: id: 30 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" +// YAML-NEXT: - operand: "$9" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 9 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 248 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "AND" +// YAML-NEXT: id: 46 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "#3" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 214 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 2000002 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: id: 1100000 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 10 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 315 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "ICMP_EQ" +// YAML-NEXT: id: 55 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" +// YAML-NEXT: - operand: "#0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 11 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 317 -// YAML-NEXT: time_step: 25 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 67 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 620000 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 12 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1740002 +// YAML-NEXT: id: 800000 // YAML-NEXT: time_step: 12 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 13 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 284 -// YAML-NEXT: time_step: 27 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 44 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$9" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$17" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2200006 -// YAML-NEXT: time_step: 27 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 201 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 14 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI" +// YAML-NEXT: id: 183 +// YAML-NEXT: time_step: 14 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" -// ASM: # Compiled II: 14 -// ASM-EMPTY: -// ASM-NEXT: PE(0,0): +// ASM: # Compiled II: 15 +// ASM: PE(0,0): // ASM-NEXT: { -// ASM-NEXT: CONSTANT, [arg0] -> [$0] (t=0, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [EAST, RED] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0], [EAST, RED] (t=1, inv_iters=0) +// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [EAST, RED], [NORTH, RED], [$0] (t=2, inv_iters=0) +// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [EAST, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=3, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [NORTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$8], [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: NOT, [EAST, RED] -> [$0], [NORTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: ICMP_ULT, [$0], [#4] -> [EAST, RED], [$17], [NORTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: ZEXT, [$8] -> [$8], [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: AND, [$0], [#2147483644] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: AND, [$0], [#2147483644] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$3] (t=22, inv_iters=1) +// ASM-NEXT: PHI_START, [$0], [$16] -> [EAST, RED], [$0] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=23, inv_iters=1) +// ASM-NEXT: AND, [$8], [#3] -> [$0], [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=10, inv_iters=0) -// ASM-NEXT: MUL, [$2], [NORTH, RED] -> [$4] (t=24, inv_iters=1) +// ASM-NEXT: ICMP_EQ, [$0], [#0] -> [EAST, RED], [$8], [$0] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [NORTH, RED] (t=25, inv_iters=1) +// ASM-NEXT: NOT, [$0] -> [NORTH, RED], [$8], [$0] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$8] -> [EAST, RED] (t=11, inv_iters=0) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=12, inv_iters=0) -// ASM-NEXT: ADD, [$3], [$4] -> [EAST, RED] (t=26, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [NORTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$9], [$17] -> [$0] (t=13, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) -// ASM-EMPTY: -// ASM-NEXT: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [NORTH, RED] -> [NORTH, RED] (t=15, inv_iters=1) +// ASM-NEXT: PHI, [$0], [NORTH, RED] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [arg0] -> [$0] (t=0, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0], [WEST, RED] (t=1, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=2, inv_iters=0) +// ASM-NEXT: GRANT_ONCE, [$0] -> [WEST, RED], [NORTH, RED], [EAST, RED] (t=2, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [$1], [$0] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: ICMP_ULT, [$0], [#4] -> [NORTH, RED], [EAST, RED], [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: GEP, [arg4], [$0] -> [$0] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: ZEXT, [$1] -> [$0], [WEST, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=5, inv_iters=0) +// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=6, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$2], [$3] -> [EAST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: LOAD, [$0] -> [WEST, RED] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [EAST, RED] (t=21, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$16], [$17] -> [EAST, RED] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=22, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: AND, [$0], [#3] -> [$0], [WEST, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#0] -> [$2], [$3], [$0] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=24, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [WEST, RED] (t=24, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [NORTH, RED], [$0], [WEST, RED] (t=11, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$16] (t=11, inv_iters=0) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=26, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [WEST, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$17] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: STORE, [WEST, RED], [$1] (t=27, inv_iters=1) +// ASM-NEXT: OR, [$9], [#3] -> [NORTH, RED], [$0], [EAST, RED] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) -// ASM-EMPTY: -// ASM-NEXT: PE(2,0): // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [EAST, RED] (t=15, inv_iters=1) +// ASM-NEXT: GEP, [arg2], [$0] -> [WEST, RED] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg3], [$0] -> [EAST, RED] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$0] -> [NORTH, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=3, inv_iters=0) +// ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg4], [$0] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$0] -> [WEST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: MUL, [$0], [$8] -> [EAST, RED] (t=22, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$16] -> [$16] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$24] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=23, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: PHI, [$0], [$1], [$8] -> [EAST, RED] (t=24, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=24, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$16], [$24] -> [$0] (t=25, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [$8] (t=26, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM: PE(3,0): +// ASM-NEXT: { +// ASM-NEXT: LOAD, [WEST, RED] -> [$0] (t=16, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { // ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [EAST, RED] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: GEP, [arg5], [$0] -> [$9], [$16] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=5, inv_iters=0) -// ASM-NEXT: LOAD, [NORTH, RED] -> [$1] (t=19, inv_iters=1) +// ASM-NEXT: LOAD, [$8] -> [WEST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=6, inv_iters=0) -// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=20, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [$0] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [WEST, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=21, inv_iters=1) +// ASM-NEXT: MUL, [WEST, RED], [$0] -> [WEST, RED] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [$2] (t=22, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$3] (t=22, inv_iters=1) +// ASM-NEXT: LOAD, [$9] -> [$0] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [$1] -> [NORTH, RED] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=23, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [WEST, RED] (t=23, inv_iters=1) +// ASM-NEXT: ADD, [$0], [$8] -> [$0] (t=24, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [$16] (t=25, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=25, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [$0] (t=26, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=11) +// ASM: PE(0,1): +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg3], [$24] -> [NORTH, RED] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$0] -> [$0] (t=16, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$25], [$8] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg4], [$0] -> [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: NOT, [SOUTH, RED] -> [SOUTH, RED], [$0] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$8], [EAST, RED], [$0] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$17], [$26] -> [$0] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=23, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$24] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: MUL, [$2], [$3] -> [$0] (t=24, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$25] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: ADD, [EAST, RED], [$0] -> [EAST, RED] (t=25, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=11, inv_iters=0) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: PHI_START, [$8], [$0] -> [$17], [$8] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$26] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: STORE, [NORTH, RED], [$1] (t=27, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=27, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [SOUTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) -// ASM-EMPTY: +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [EAST, RED] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [WEST, RED], [$10] -> [$8], [EAST, RED], [NORTH, RED], [$0] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED] (t=16, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$8] -> [NORTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$26] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=3, inv_iters=0) +// ASM-NEXT: PHI_START, [WEST, RED], [$25] -> [EAST, RED], [$0] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED], [$0], [WEST, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [WEST, RED], [$16] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=22, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$0] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [$8], [$24], [WEST, RED], [NORTH, RED], [EAST, RED], [SOUTH, RED], [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#4] -> [NORTH, RED], [$8] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$8] -> [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [$0], [SOUTH, RED] -> [$0], [$9], [WEST, RED] (t=10, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$25] (t=25, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=10) diff --git a/test/mapping_quality/branch_for.mlir b/test/mapping_quality/branch_for.mlir index 2ef65d4a..b805ab45 100644 --- a/test/mapping_quality/branch_for.mlir +++ b/test/mapping_quality/branch_for.mlir @@ -365,7 +365,7 @@ func.func @loop_test() -> f32 { // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "WEST" @@ -375,7 +375,7 @@ func.func @loop_test() -> f32 { // YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$16" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" @@ -408,10 +408,10 @@ func.func @loop_test() -> f32 { // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$16" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" @@ -531,14 +531,14 @@ func.func @loop_test() -> f32 { // ASM-NEXT: } (idx_per_ii=2) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=4, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$16] -> [NORTH, RED] (t=4, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=4, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$8] -> [NORTH, RED] (t=4, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: ICMP_SLT, [WEST, RED], [EAST, RED] -> [SOUTH, RED], [WEST, RED], [$16], [$8], [EAST, RED], [NORTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: ICMP_SLT, [WEST, RED], [EAST, RED] -> [SOUTH, RED], [WEST, RED], [$8], [$1], [EAST, RED], [NORTH, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM: PE(3,1): // ASM-NEXT: { @@ -560,10 +560,10 @@ func.func @loop_test() -> f32 { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=4, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM: PE(1,3): // ASM-NEXT: { diff --git a/test/multi-cgra/kernel_mapping/fir/fir.mlir b/test/multi-cgra/kernel_mapping/fir/fir.mlir index 2a84cd51..69d228c7 100644 --- a/test/multi-cgra/kernel_mapping/fir/fir.mlir +++ b/test/multi-cgra/kernel_mapping/fir/fir.mlir @@ -89,7 +89,7 @@ module attributes {} { } } -// TASKFLOW: module { +// TASKFLOW: module { // TASKFLOW-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // TASKFLOW-NEXT: %c0_i32 = arith.constant 0 : i32 // TASKFLOW-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -107,7 +107,7 @@ module attributes {} { // TASKFLOW-NEXT: } // TASKFLOW-NEXT: } -// HYPERBLOCK: module { +// HYPERBLOCK: module { // HYPERBLOCK-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // HYPERBLOCK-NEXT: %c0_i32 = arith.constant 0 : i32 // HYPERBLOCK-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -127,7 +127,7 @@ module attributes {} { // HYPERBLOCK-NEXT: } // HYPERBLOCK-NEXT: } -// KERNEL: module { +// KERNEL: module { // KERNEL-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // KERNEL-NEXT: %c0_i32 = arith.constant 0 : i32 // KERNEL-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -148,7 +148,7 @@ module attributes {} { // KERNEL-NEXT: } // KERNEL-NEXT: } -// NEURA: module { +// NEURA: module { // NEURA-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // NEURA-NEXT: %c0_i32 = arith.constant 0 : i32 // NEURA-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -169,7 +169,7 @@ module attributes {} { // NEURA-NEXT: } // NEURA-NEXT: } -// DATAFLOW: module { +// DATAFLOW: module { // DATAFLOW-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // DATAFLOW-NEXT: %c0_i32 = arith.constant 0 : i32 // DATAFLOW-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -198,7 +198,7 @@ module attributes {} { // DATAFLOW-NEXT: } // DATAFLOW-NEXT: } -// MAPPED: module { +// MAPPED: module { // MAPPED-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // MAPPED-NEXT: %c0_i32 = arith.constant 0 : i32 // MAPPED-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -211,7 +211,7 @@ module attributes {} { // MAPPED-NEXT: %4 = "neura.data_mov"(%2) {dfg_id = 4 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %5 = neura.phi_start %4, %3 {dfg_id = 8 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %6 = neura.counter {counter_id = 0 : i32, counter_type = "leaf", dfg_id = 2 : i32, lower_bound = 0 : index, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}], step = 1 : index, upper_bound = 32 : index} : !neura.data -// MAPPED-NEXT: %7 = "neura.data_mov"(%6) {dfg_id = 5 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 0 : i32}, {id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %7 = "neura.data_mov"(%6) {dfg_id = 5 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 0 : i32}, {id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %8 = neura.load_indexed [%7 : !neura.data] {dfg_id = 9 : i32, lhs_value = "%input0", mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data // MAPPED-NEXT: %9 = "neura.data_mov"(%6) {dfg_id = 6 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %10 = neura.load_indexed [%9 : !neura.data] {dfg_id = 10 : i32, lhs_value = "%input1", mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data @@ -237,4 +237,4 @@ module attributes {} { // MAPPED-NEXT: } // MAPPED-NEXT: return %value_outputs : i32 // MAPPED-NEXT: } -// MAPPED-NEXT: } +// MAPPED-NEXT: } \ No newline at end of file diff --git a/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir b/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir index 1974708d..0e9c0b38 100644 --- a/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir +++ b/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir @@ -168,7 +168,7 @@ module { // MAPPED-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 16 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 19 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %14 = "neura.data_mov"(%5) {dfg_id = 10 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 15 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 15 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 18 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %17 = "neura.data_mov"(%10) {dfg_id = 14 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %18 = "neura.not"(%17) {dfg_id = 17 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data @@ -190,7 +190,7 @@ module { // MAPPED-NEXT: %33 = "neura.data_mov"(%13) {dfg_id = 22 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %34 = "neura.add"(%33) {dfg_id = 26 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : index} : (!neura.data) -> !neura.data // MAPPED-NEXT: neura.ctrl_mov %34 -> %6 {dfg_id = 30 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : !neura.data !neura.data -// MAPPED-NEXT: neura.ctrl_mov %32 -> %3 {dfg_id = 37 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 208 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 208 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : !neura.data !neura.data +// MAPPED-NEXT: neura.ctrl_mov %32 -> %3 {dfg_id = 37 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 194 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 194 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}]} : !neura.data !neura.data // MAPPED-NEXT: neura.yield {dfg_id = 4 : i32} // MAPPED-NEXT: } : i32 // MAPPED-NEXT: taskflow.yield reads(%arg3, %arg4 : memref, memref) values(%0 : i32) diff --git a/test/multi-cgra/kernel_mapping/relu/relu.mlir b/test/multi-cgra/kernel_mapping/relu/relu.mlir index 9fdc7507..3c55d42b 100644 --- a/test/multi-cgra/kernel_mapping/relu/relu.mlir +++ b/test/multi-cgra/kernel_mapping/relu/relu.mlir @@ -93,31 +93,31 @@ module attributes {} { } } -// TASKFLOW: module { -// TASKFLOW-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { -// TASKFLOW-NEXT: %c0_i32 = arith.constant 0 : i32 -// TASKFLOW-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { -// TASKFLOW-NEXT: ^bb0(%arg2: memref, %arg3: memref, %arg4: memref, %arg5: i32): -// TASKFLOW-NEXT: affine.for %arg6 = 0 to 32 { -// TASKFLOW-NEXT: %0 = affine.load %arg2[%arg6] : memref -// TASKFLOW-NEXT: %1 = arith.cmpi sgt, %0, %arg5 : i32 -// TASKFLOW-NEXT: scf.if %1 { -// TASKFLOW-NEXT: %2 = affine.load %arg2[%arg6] : memref -// TASKFLOW-NEXT: %3 = affine.load %arg4[%arg6] : memref -// TASKFLOW-NEXT: %4 = arith.addi %3, %2 : i32 -// TASKFLOW-NEXT: affine.store %4, %arg4[%arg6] : memref -// TASKFLOW-NEXT: } else { -// TASKFLOW-NEXT: %2 = affine.load %arg4[%arg6] : memref -// TASKFLOW-NEXT: affine.store %2, %arg4[%arg6] : memref -// TASKFLOW-NEXT: } -// TASKFLOW-NEXT: } -// TASKFLOW-NEXT: taskflow.yield reads(%arg2, %arg4 : memref, memref) writes(%arg4 : memref) -// TASKFLOW-NEXT: } -// TASKFLOW-NEXT: return -// TASKFLOW-NEXT: } -// TASKFLOW-NEXT:} +// TASKFLOW: module { +// TASKFLOW-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { +// TASKFLOW-NEXT: %c0_i32 = arith.constant 0 : i32 +// TASKFLOW-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { +// TASKFLOW-NEXT: ^bb0(%arg2: memref, %arg3: memref, %arg4: memref, %arg5: i32): +// TASKFLOW-NEXT: affine.for %arg6 = 0 to 32 { +// TASKFLOW-NEXT: %0 = affine.load %arg2[%arg6] : memref +// TASKFLOW-NEXT: %1 = arith.cmpi sgt, %0, %arg5 : i32 +// TASKFLOW-NEXT: scf.if %1 { +// TASKFLOW-NEXT: %2 = affine.load %arg2[%arg6] : memref +// TASKFLOW-NEXT: %3 = affine.load %arg4[%arg6] : memref +// TASKFLOW-NEXT: %4 = arith.addi %3, %2 : i32 +// TASKFLOW-NEXT: affine.store %4, %arg4[%arg6] : memref +// TASKFLOW-NEXT: } else { +// TASKFLOW-NEXT: %2 = affine.load %arg4[%arg6] : memref +// TASKFLOW-NEXT: affine.store %2, %arg4[%arg6] : memref +// TASKFLOW-NEXT: } +// TASKFLOW-NEXT: } +// TASKFLOW-NEXT: taskflow.yield reads(%arg2, %arg4 : memref, memref) writes(%arg4 : memref) +// TASKFLOW-NEXT: } +// TASKFLOW-NEXT: return +// TASKFLOW-NEXT: } +// TASKFLOW-NEXT: } -// HYPERBLOCK: module { +// HYPERBLOCK: module { // HYPERBLOCK-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { // HYPERBLOCK-NEXT: %c0_i32 = arith.constant 0 : i32 // HYPERBLOCK-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { @@ -144,7 +144,7 @@ module attributes {} { // HYPERBLOCK-NEXT: } // HYPERBLOCK-NEXT: } -// KERNEL: module { +// KERNEL: module { // KERNEL-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { // KERNEL-NEXT: %c0_i32 = arith.constant 0 : i32 // KERNEL-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { @@ -172,7 +172,7 @@ module attributes {} { // KERNEL-NEXT: } // KERNEL-NEXT: } -// NEURA: module { +// NEURA: module { // NEURA-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { // NEURA-NEXT: %c0_i32 = arith.constant 0 : i32 // NEURA-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { @@ -203,7 +203,7 @@ module attributes {} { // NEURA-NEXT: } // NEURA-NEXT: } -// DATAFLOW: module { +// DATAFLOW: module { // DATAFLOW-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { // DATAFLOW-NEXT: %c0_i32 = arith.constant 0 : i32 // DATAFLOW-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { @@ -231,7 +231,7 @@ module attributes {} { // DATAFLOW-NEXT: } // DATAFLOW-NEXT: } -// MAPPED: module { +// MAPPED: module { // MAPPED-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { // MAPPED-NEXT: %c0_i32 = arith.constant 0 : i32 // MAPPED-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { @@ -255,9 +255,9 @@ module attributes {} { // MAPPED-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 20 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %15 = neura.load_indexed [%14 : !neura.data] {dfg_id = 23 : i32, lhs_value = "%input2", mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data // MAPPED-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 25 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 5 : i32}, {id = 256 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %17 = "neura.data_mov"(%13) {dfg_id = 19 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 5 : i32}, {id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %17 = "neura.data_mov"(%13) {dfg_id = 19 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 5 : i32}, {id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: neura.store_indexed %16 to [%17 : !neura.data] {dfg_id = 27 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 3 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 2 : i32}], rhs_value = "%input2"} : !neura.data -// MAPPED-NEXT: %18 = "neura.data_mov"(%8) {dfg_id = 15 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %18 = "neura.data_mov"(%8) {dfg_id = 15 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %19 = neura.load_indexed [%18 : !neura.data] {dfg_id = 18 : i32, lhs_value = "%input0", mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data // MAPPED-NEXT: %20 = "neura.data_mov"(%8) {dfg_id = 14 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %21 = neura.load_indexed [%20 : !neura.data] {dfg_id = 17 : i32, lhs_value = "%input2", mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data diff --git a/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir b/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir index 4597a50b..97c007d0 100644 --- a/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir +++ b/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir @@ -64,7 +64,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { } } -// AFFINE: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { +// AFFINE: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // AFFINE-NEXT: memref.global "private" constant @__constant_64xf32 : memref<64xf32> = dense<0.000000e+00> {alignment = 64 : i64} // AFFINE-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32_0 : memref<64x3x3x64xf32> = dense<-0.0151730878> {alignment = 64 : i64} // AFFINE-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32 : memref<64x3x3x64xf32> = dense<0.0197670367> {alignment = 64 : i64} @@ -239,7 +239,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // AFFINE-NEXT: } -// KERNEL: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { +// KERNEL: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // KERNEL-NEXT: memref.global "private" constant @__constant_64xf32 : memref<64xf32> = dense<0.000000e+00> {alignment = 64 : i64} // KERNEL-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32_0 : memref<64x3x3x64xf32> = dense<-0.0151730878> {alignment = 64 : i64} // KERNEL-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32 : memref<64x3x3x64xf32> = dense<0.0197670367> {alignment = 64 : i64} @@ -523,7 +523,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { -// STREAM: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { +// STREAM: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // STREAM-NEXT: memref.global "private" constant @__constant_64xf32 : memref<64xf32> = dense<0.000000e+00> {alignment = 64 : i64} // STREAM-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32_0 : memref<64x3x3x64xf32> = dense<-0.0151730878> {alignment = 64 : i64} // STREAM-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32 : memref<64x3x3x64xf32> = dense<0.0197670367> {alignment = 64 : i64} @@ -705,16 +705,207 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // STREAM-NEXT: } -// RESOPT: taskflow.task @Task_1_Task_0_Task_2_utilfused_utilfused -// RESOPT-SAME: {cgra_count = 2 : i32, compiled_ii = 5 : i32, steps = 3 : i32, tile_shape = "1x2", trip_count = 6400 : i32} -// RESOPT: taskflow.task @Task_3 -// RESOPT-SAME: {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 6 : i32, tile_shape = "1x2", trip_count = 2359296 : i32} -// RESOPT: taskflow.task @Task_4_Task_5_fused_Task_7_utilfused -// RESOPT-SAME: {cgra_count = 2 : i32, compiled_ii = 4 : i32, steps = 7 : i32, tile_shape = "1x2", trip_count = 6400 : i32} -// RESOPT: taskflow.task @Task_6_Task_8_utilfused -// RESOPT-SAME: {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 3 : i32, tile_shape = "1x2", trip_count = 4096 : i32} -// RESOPT: taskflow.task @Task_9 -// RESOPT-SAME: {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 6 : i32, tile_shape = "1x2", trip_count = 2359296 : i32} -// RESOPT: taskflow.task @Task_10_Task_11_Task_12_fused_fused -// RESOPT-SAME: {cgra_count = 2 : i32, compiled_ii = 7 : i32, steps = 8 : i32, tile_shape = "1x2", trip_count = 4096 : i32} -// RESOPT: return +// RESOPT: module attributes {torch.debug_module_name = "SimpleResNetBlock"} { +// RESOPT-NEXT: memref.global "private" constant @__constant_64xf32 : memref<64xf32> = dense<0.000000e+00> {alignment = 64 : i64} +// RESOPT-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32_0 : memref<64x3x3x64xf32> = dense<-0.0151730878> {alignment = 64 : i64} +// RESOPT-NEXT: memref.global "private" constant @__constant_64x3x3x64xf32 : memref<64x3x3x64xf32> = dense<0.0197670367> {alignment = 64 : i64} +// RESOPT-NEXT: func.func @forward(%arg0: memref<1x64x8x8xf32>) -> memref<1x64x8x8xf32> { +// RESOPT-NEXT: %cst = arith.constant 0.0197670367 : f32 +// RESOPT-NEXT: %cst_0 = arith.constant -0.0151730878 : f32 +// RESOPT-NEXT: %cst_1 = arith.constant 3.40282347E+38 : f32 +// RESOPT-NEXT: %cst_2 = arith.constant 0.000000e+00 : f32 +// RESOPT-NEXT: %alloc = memref.alloc() {alignment = 64 : i64} : memref<1x8x8x64xf32> +// RESOPT-NEXT: %alloc_3 = memref.alloc() {alignment = 64 : i64} : memref<1x10x10x64xf32> +// RESOPT-NEXT: %alloc_4 = memref.alloc() {alignment = 64 : i64} : memref<1x8x8x64xf32> +// RESOPT-NEXT: %dependency_read_out, %dependency_write_out:3 = taskflow.task @Task_1_Task_0_Task_2_utilfused_utilfused dependency_read_in(%arg0 : memref<1x64x8x8xf32>) dependency_write_in(%alloc_3, %alloc, %alloc_4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) value_inputs(%cst_2 : f32) [original_read_memrefs(%arg0 : memref<1x64x8x8xf32>), original_write_memrefs(%alloc_3, %alloc, %alloc_4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 5 : i32, steps = 3 : i32, tile_shape = "1x2", trip_count = 6400 : i32} : (memref<1x64x8x8xf32>, memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x64x8x8xf32>, memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { +// RESOPT-NEXT: ^bb0(%arg1: memref<1x64x8x8xf32>, %arg2: memref<1x10x10x64xf32>, %arg3: memref<1x8x8x64xf32>, %arg4: memref<1x8x8x64xf32>, %arg5: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg5, %arg2, %arg1, %arg3, %arg4 : f32, memref<1x10x10x64xf32>, memref<1x64x8x8xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg6: f32, %arg7: memref<1x10x10x64xf32>, %arg8: memref<1x64x8x8xf32>, %arg9: memref<1x8x8x64xf32>, %arg10: memref<1x8x8x64xf32>): +// RESOPT-NEXT: %12 = "neura.constant"() <{value = "%input1"}> : () -> !neura.data, i1> +// RESOPT-NEXT: %13 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %14 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : !neura.data +// RESOPT-NEXT: %15 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : !neura.data +// RESOPT-NEXT: %16 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: neura.store_indexed %12 to %12[%13, %14, %15, %16 : !neura.data, !neura.data, !neura.data, !neura.data] !neura.data, i1> {lhs_value = "%input0"} : !neura.data, i1> +// RESOPT-NEXT: %17 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %18 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %19 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %20 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %21 = neura.load_indexed [%17, %20, %18, %19 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: neura.store_indexed %21 to [%17, %18, %19, %20 : !neura.data, !neura.data, !neura.data, !neura.data] {rhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %22 = "neura.constant"() <{value = "%input1"}> : () -> !neura.data, i1> +// RESOPT-NEXT: %23 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %24 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %25 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %26 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: neura.store_indexed %22 to %22[%23, %24, %25, %26 : !neura.data, !neura.data, !neura.data, !neura.data] !neura.data, i1> {lhs_value = "%input0"} : !neura.data, i1> +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: %4 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %5 = taskflow.counter parent(%4 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %6 = taskflow.counter parent(%5 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %7 = taskflow.counter parent(%6 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: %8 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %9 = taskflow.counter parent(%8 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %10 = taskflow.counter parent(%9 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %11 = taskflow.counter parent(%10 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: taskflow.yield reads(%arg1 : memref<1x64x8x8xf32>) writes(%arg2, %arg3, %arg4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: %dependency_read_out_5:2, %dependency_write_out_6 = taskflow.task @Task_3 dependency_read_in(%dependency_write_out#0, %dependency_write_out#2 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) dependency_write_in(%dependency_write_out#2 : memref<1x8x8x64xf32>) value_inputs(%cst_0 : f32) [original_read_memrefs(%alloc_3, %alloc_4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>), original_write_memrefs(%alloc_4 : memref<1x8x8x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 6 : i32, tile_shape = "1x2", trip_count = 2359296 : i32} : (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { +// RESOPT-NEXT: ^bb0(%arg1: memref<1x10x10x64xf32>, %arg2: memref<1x8x8x64xf32>, %arg3: memref<1x8x8x64xf32>, %arg4: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 3 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: %4 = taskflow.counter parent(%3 : index) attributes {counter_id = 4 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : index +// RESOPT-NEXT: %5 = taskflow.counter parent(%4 : index) attributes {counter_id = 5 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : index +// RESOPT-NEXT: %6 = taskflow.counter parent(%5 : index) attributes {counter_id = 6 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg1, %arg3, %arg4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, f32) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg5: memref<1x10x10x64xf32>, %arg6: memref<1x8x8x64xf32>, %arg7: f32): +// RESOPT-NEXT: %7 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %8 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %9 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %10 = neura.counter {counter_id = 3 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %11 = neura.counter {counter_id = 4 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : !neura.data +// RESOPT-NEXT: %12 = neura.counter {counter_id = 5 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : !neura.data +// RESOPT-NEXT: %13 = neura.counter {counter_id = 6 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %14 = "neura.add"(%8, %11) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %15 = "neura.add"(%9, %12) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %16 = neura.load_indexed [%7, %14, %15, %13 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %17 = neura.load_indexed [%7, %8, %9, %10 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %18 = "neura.fmul"(%16) {rhs_value = "%input2"} : (!neura.data) -> !neura.data +// RESOPT-NEXT: %19 = "neura.fadd"(%17, %18) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %19 to [%7, %8, %9, %10 : !neura.data, !neura.data, !neura.data, !neura.data] {rhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: taskflow.yield reads(%arg1, %arg3 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) writes(%arg3 : memref<1x8x8x64xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: %alloc_7 = memref.alloc() {alignment = 64 : i64} : memref<1x64x8x8xf32> +// RESOPT-NEXT: %alloc_8 = memref.alloc() {alignment = 64 : i64} : memref<1x8x8x64xf32> +// RESOPT-NEXT: %alloc_9 = memref.alloc() {alignment = 64 : i64} : memref<1x10x10x64xf32> +// RESOPT-NEXT: %dependency_read_out_10, %dependency_write_out_11:2 = taskflow.task @Task_4_Task_5_fused_Task_7_utilfused dependency_read_in(%dependency_write_out_6 : memref<1x8x8x64xf32>) dependency_write_in(%alloc_7, %alloc_9 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) value_inputs(%cst_1, %cst_2 : f32, f32) [original_read_memrefs(%alloc_4 : memref<1x8x8x64xf32>), original_write_memrefs(%alloc_7, %alloc_9 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 4 : i32, steps = 7 : i32, tile_shape = "1x2", trip_count = 6400 : i32} : (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>, f32, f32) -> (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) { +// RESOPT-NEXT: ^bb0(%arg1: memref<1x8x8x64xf32>, %arg2: memref<1x64x8x8xf32>, %arg3: memref<1x10x10x64xf32>, %arg4: f32, %arg5: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg1, %arg4, %arg5, %arg2, %arg3 : memref<1x8x8x64xf32>, f32, f32, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg6: memref<1x8x8x64xf32>, %arg7: f32, %arg8: f32, %arg9: memref<1x64x8x8xf32>, %arg10: memref<1x10x10x64xf32>): +// RESOPT-NEXT: %8 = "neura.constant"() <{value = "%input1"}> : () -> !neura.data +// RESOPT-NEXT: %9 = "neura.constant"() <{value = "%input2"}> : () -> !neura.data +// RESOPT-NEXT: %10 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %11 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %12 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %13 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %14 = neura.load_indexed [%10, %12, %13, %11 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %15 = "neura.fcmp"(%14, %8) <{cmpType = "olt"}> : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %16 = "neura.sel"(%15, %14, %8) : (!neura.data, !neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %17 = "neura.fcmp"(%16, %9) <{cmpType = "ogt"}> : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %18 = "neura.sel"(%17, %16, %9) : (!neura.data, !neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %18 to [%10, %11, %12, %13 : !neura.data, !neura.data, !neura.data, !neura.data] {rhs_value = "%input3"} : !neura.data +// RESOPT-NEXT: %19 = "neura.constant"() <{value = "%input1"}> : () -> !neura.data, i1> +// RESOPT-NEXT: %20 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %21 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : !neura.data +// RESOPT-NEXT: %22 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : !neura.data +// RESOPT-NEXT: %23 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: neura.store_indexed %19 to %19[%20, %21, %22, %23 : !neura.data, !neura.data, !neura.data, !neura.data] !neura.data, i1> {lhs_value = "%input0"} : !neura.data, i1> +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: %4 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %5 = taskflow.counter parent(%4 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : index +// RESOPT-NEXT: %6 = taskflow.counter parent(%5 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 10 : index} : index +// RESOPT-NEXT: %7 = taskflow.counter parent(%6 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: taskflow.yield reads(%arg1 : memref<1x8x8x64xf32>) writes(%arg2, %arg3 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: %alloc_12 = memref.alloc() {alignment = 64 : i64} : memref<1x8x8x64xf32> +// RESOPT-NEXT: %dependency_read_out_13, %dependency_write_out_14:2 = taskflow.task @Task_6_Task_8_utilfused dependency_read_in(%dependency_write_out_11#0 : memref<1x64x8x8xf32>) dependency_write_in(%alloc_8, %alloc_12 : memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) value_inputs(%cst_2 : f32) [original_read_memrefs(%alloc_7 : memref<1x64x8x8xf32>), original_write_memrefs(%alloc_8, %alloc_12 : memref<1x8x8x64xf32>, memref<1x8x8x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 3 : i32, tile_shape = "1x2", trip_count = 4096 : i32} : (memref<1x64x8x8xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x64x8x8xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { +// RESOPT-NEXT: ^bb0(%arg1: memref<1x64x8x8xf32>, %arg2: memref<1x8x8x64xf32>, %arg3: memref<1x8x8x64xf32>, %arg4: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg1, %arg2, %arg4, %arg3 : memref<1x64x8x8xf32>, memref<1x8x8x64xf32>, f32, memref<1x8x8x64xf32>) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg5: memref<1x64x8x8xf32>, %arg6: memref<1x8x8x64xf32>, %arg7: f32, %arg8: memref<1x8x8x64xf32>): +// RESOPT-NEXT: %8 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %9 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %10 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %11 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %12 = neura.load_indexed [%8, %11, %9, %10 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: neura.store_indexed %12 to [%8, %9, %10, %11 : !neura.data, !neura.data, !neura.data, !neura.data] {rhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %13 = "neura.constant"() <{value = "%input1"}> : () -> !neura.data, i1> +// RESOPT-NEXT: %14 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %15 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %16 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %17 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: neura.store_indexed %13 to %13[%14, %15, %16, %17 : !neura.data, !neura.data, !neura.data, !neura.data] !neura.data, i1> {lhs_value = "%input0"} : !neura.data, i1> +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: %4 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %5 = taskflow.counter parent(%4 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %6 = taskflow.counter parent(%5 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %7 = taskflow.counter parent(%6 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: taskflow.yield reads(%arg1 : memref<1x64x8x8xf32>) writes(%arg2, %arg3 : memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: %dependency_read_out_15:2, %dependency_write_out_16 = taskflow.task @Task_9 dependency_read_in(%dependency_write_out_11#1, %dependency_write_out_14#1 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) dependency_write_in(%dependency_write_out_14#1 : memref<1x8x8x64xf32>) value_inputs(%cst : f32) [original_read_memrefs(%alloc_9, %alloc_12 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>), original_write_memrefs(%alloc_12 : memref<1x8x8x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 6 : i32, tile_shape = "1x2", trip_count = 2359296 : i32} : (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { +// RESOPT-NEXT: ^bb0(%arg1: memref<1x10x10x64xf32>, %arg2: memref<1x8x8x64xf32>, %arg3: memref<1x8x8x64xf32>, %arg4: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 3 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: %4 = taskflow.counter parent(%3 : index) attributes {counter_id = 4 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : index +// RESOPT-NEXT: %5 = taskflow.counter parent(%4 : index) attributes {counter_id = 5 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : index +// RESOPT-NEXT: %6 = taskflow.counter parent(%5 : index) attributes {counter_id = 6 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg1, %arg3, %arg4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, f32) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg5: memref<1x10x10x64xf32>, %arg6: memref<1x8x8x64xf32>, %arg7: f32): +// RESOPT-NEXT: %7 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %8 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %9 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %10 = neura.counter {counter_id = 3 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %11 = neura.counter {counter_id = 4 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : !neura.data +// RESOPT-NEXT: %12 = neura.counter {counter_id = 5 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 3 : index} : !neura.data +// RESOPT-NEXT: %13 = neura.counter {counter_id = 6 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %14 = "neura.add"(%8, %11) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %15 = "neura.add"(%9, %12) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %16 = neura.load_indexed [%7, %14, %15, %13 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %17 = neura.load_indexed [%7, %8, %9, %10 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %18 = "neura.fmul"(%16) {rhs_value = "%input2"} : (!neura.data) -> !neura.data +// RESOPT-NEXT: %19 = "neura.fadd"(%17, %18) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %19 to [%7, %8, %9, %10 : !neura.data, !neura.data, !neura.data, !neura.data] {rhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: taskflow.yield reads(%arg1, %arg3 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) writes(%arg3 : memref<1x8x8x64xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: %alloc_17 = memref.alloc() {alignment = 64 : i64} : memref<1x64x8x8xf32> +// RESOPT-NEXT: %dependency_read_out_18:2, %dependency_write_out_19 = taskflow.task @Task_10_Task_11_Task_12_fused_fused dependency_read_in(%dependency_write_out_16, %dependency_read_out : memref<1x8x8x64xf32>, memref<1x64x8x8xf32>) dependency_write_in(%alloc_17 : memref<1x64x8x8xf32>) value_inputs(%cst_1, %cst_2 : f32, f32) [original_read_memrefs(%alloc_12, %arg0 : memref<1x8x8x64xf32>, memref<1x64x8x8xf32>), original_write_memrefs(%alloc_17 : memref<1x64x8x8xf32>)] {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 8 : i32, tile_shape = "1x2", trip_count = 4096 : i32} : (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x64x8x8xf32>, f32, f32) -> (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x64x8x8xf32>) { +// RESOPT-NEXT: ^bb0(%arg1: memref<1x8x8x64xf32>, %arg2: memref<1x64x8x8xf32>, %arg3: memref<1x64x8x8xf32>, %arg4: f32, %arg5: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index +// RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg1, %arg2, %arg4, %arg5, %arg3 : memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, f32, f32, memref<1x64x8x8xf32>) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg6: memref<1x8x8x64xf32>, %arg7: memref<1x64x8x8xf32>, %arg8: f32, %arg9: f32, %arg10: memref<1x64x8x8xf32>): +// RESOPT-NEXT: %4 = "neura.constant"() <{value = "%input2"}> : () -> !neura.data +// RESOPT-NEXT: %5 = "neura.constant"() <{value = "%input3"}> : () -> !neura.data +// RESOPT-NEXT: %6 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : !neura.data +// RESOPT-NEXT: %7 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : !neura.data +// RESOPT-NEXT: %8 = neura.counter {counter_id = 2 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %9 = neura.counter {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %10 = neura.load_indexed [%6, %8, %9, %7 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %11 = neura.load_indexed [%6, %7, %8, %9 : !neura.data, !neura.data, !neura.data, !neura.data] {lhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %12 = "neura.fadd"(%10, %11) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %13 = "neura.fcmp"(%12, %4) <{cmpType = "olt"}> : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %14 = "neura.sel"(%13, %12, %4) : (!neura.data, !neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %15 = "neura.fcmp"(%14, %5) <{cmpType = "ogt"}> : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %16 = "neura.sel"(%15, %14, %5) : (!neura.data, !neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %16 to [%6, %7, %8, %9 : !neura.data, !neura.data, !neura.data, !neura.data] {rhs_value = "%input4"} : !neura.data +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: taskflow.yield reads(%arg1, %arg2 : memref<1x8x8x64xf32>, memref<1x64x8x8xf32>) writes(%arg3 : memref<1x64x8x8xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: return %dependency_write_out_19 : memref<1x64x8x8xf32> +// RESOPT-NEXT: } +// RESOPT-NEXT: } diff --git a/test/neura/ctrl/branch_for.mlir b/test/neura/ctrl/branch_for.mlir index bec58b84..dfd2e27f 100644 --- a/test/neura/ctrl/branch_for.mlir +++ b/test/neura/ctrl/branch_for.mlir @@ -394,7 +394,7 @@ func.func @loop_test() -> f32 { // YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: @@ -405,7 +405,7 @@ func.func @loop_test() -> f32 { // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "SOUTH" @@ -487,10 +487,10 @@ func.func @loop_test() -> f32 { // ASM-NEXT: FADD, [SOUTH, RED], [#3.000000] -> [$0], [EAST, RED] (t=4, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [SOUTH, RED] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM: PE(1,1): // ASM-NEXT: { diff --git a/test/neura/fusion/test.mlir b/test/neura/fusion/test.mlir index e9e1a77d..19c4c7ff 100644 --- a/test/neura/fusion/test.mlir +++ b/test/neura/fusion/test.mlir @@ -33,29 +33,7 @@ // CHECK-FUSED-DAG: %93 = "neura.mul_add"(%90, %91, %92) : (!neura.data, !neura.data, !neura.data) -> !neura.data // CHECK-FUSED-DAG: %106 = "neura.mul_add"(%103, %104, %105) : (!neura.data, !neura.data, !neura.data) -> !neura.data -// CHECK-MAPPING: /bin/sh: --: invalid option -// CHECK-MAPPING-NEXT: Usage: /bin/sh [GNU long option] [option] ... -// CHECK-MAPPING-NEXT: /bin/sh [GNU long option] [option] script-file ... -// CHECK-MAPPING-NEXT: GNU long options: -// CHECK-MAPPING-NEXT: --debug -// CHECK-MAPPING-NEXT: --debugger -// CHECK-MAPPING-NEXT: --dump-po-strings -// CHECK-MAPPING-NEXT: --dump-strings -// CHECK-MAPPING-NEXT: --help -// CHECK-MAPPING-NEXT: --init-file -// CHECK-MAPPING-NEXT: --login -// CHECK-MAPPING-NEXT: --noediting -// CHECK-MAPPING-NEXT: --noprofile -// CHECK-MAPPING-NEXT: --norc -// CHECK-MAPPING-NEXT: --posix -// CHECK-MAPPING-NEXT: --pretty-print -// CHECK-MAPPING-NEXT: --rcfile -// CHECK-MAPPING-NEXT: --restricted -// CHECK-MAPPING-NEXT: --verbose -// CHECK-MAPPING-NEXT: --version -// CHECK-MAPPING-NEXT: Shell options: -// CHECK-MAPPING-NEXT: -ilrsD or -c command or -O shopt_option (invocation only) -// CHECK-MAPPING-NEXT: -abefhkmnptuvxBCHP or -o option +// CHECK-MAPPING: mapping_info = {compiled_ii = 13 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} // RUN: mlir-neura-opt --architecture-spec=%S/../../arch_spec/architecture.yaml --verify-each=true --mlir-print-ir-after-failure \ // RUN: --assign-accelerator \ @@ -133,29 +111,7 @@ // RUN: --insert-data-mov \ // RUN: --map-to-accelerator="mapping-strategy=heuristic backtrack-config=simple" %t-kernel.mlir | FileCheck %s --check-prefix=CHECK-ITER-MERGE-PATTERN-MAPPING -// CHECK-ITER-MERGE-PATTERN-MAPPING: /bin/sh: --: invalid option -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: Usage: /bin/sh [GNU long option] [option] ... -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: /bin/sh [GNU long option] [option] script-file ... -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: GNU long options: -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --debug -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --debugger -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --dump-po-strings -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --dump-strings -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --help -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --init-file -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --login -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --noediting -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --noprofile -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --norc -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --posix -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --pretty-print -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --rcfile -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --restricted -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --verbose -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: --version -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: Shell options: -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: -ilrsD or -c command or -O shopt_option (invocation only) -// CHECK-ITER-MERGE-PATTERN-MAPPING-NEXT: -abefhkmnptuvxBCHP or -o option +// CHECK-ITER-MERGE-PATTERN-MAPPING: mapping_info = {compiled_ii = 11 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 8 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} // RUN: mlir-neura-opt --architecture-spec=%S/../../arch_spec/architecture.yaml --verify-each=true --mlir-print-ir-after-failure \ // RUN: --assign-accelerator \ @@ -173,203 +129,203 @@ // RUN: FileCheck %s --input-file=hardware_config.json --check-prefix=CHECK-HARDWARE-MERGE // CHECK-HARDWARE-MERGE: { -// CHECK-HARDWARE-MERGE-NEXT: "hardware_configuration": { -// CHECK-HARDWARE-MERGE-NEXT: "summary": { -// CHECK-HARDWARE-MERGE-NEXT: "total_templates": 3 -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: "hardware_templates": [ -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "template_id": 0, -// CHECK-HARDWARE-MERGE-NEXT: "instance_count": 2, -// CHECK-HARDWARE-MERGE-NEXT: "supported_single_ops": ["neura.gep", "neura.grant_once", "neura.grant_predicate", "neura.load", "neura.phi_start", "neura.store"], -// CHECK-HARDWARE-MERGE-NEXT: "supported_composite_ops": [ -// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 9, "name": "phi_start->fused_op:gep->load"}, -// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 0, "name": "gep->load"}, -// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 11, "name": "phi_start->grant_predicate"} -// CHECK-HARDWARE-MERGE-NEXT: ], -// CHECK-HARDWARE-MERGE-NEXT: "functional_units": [ -// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 0, "op_type": "neura.phi_start"}, -// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 1, "op_type": "neura.gep"}, -// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 2, "op_type": "neura.load"}, -// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 3, "op_type": "neura.grant_predicate"} -// CHECK-HARDWARE-MERGE-NEXT: ], -// CHECK-HARDWARE-MERGE-NEXT: "fu_connections": [ -// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 0, "to_fu": 1}, -// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 0, "to_fu": 3}, -// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 1, "to_fu": 2} -// CHECK-HARDWARE-MERGE-NEXT: ], -// CHECK-HARDWARE-MERGE-NEXT: "pattern_execution_plans": [ -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 9, -// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "phi_start->fused_op:gep->load", -// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [0, 1, 2], -// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [0], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.phi_start"] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [1], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.gep"] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 2, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [2], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.load"] -// CHECK-HARDWARE-MERGE-NEXT: } -// CHECK-HARDWARE-MERGE-NEXT: ] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 0, -// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "gep->load", -// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [1, 2], -// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [1], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.gep"] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [2], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.load"] -// CHECK-HARDWARE-MERGE-NEXT: } -// CHECK-HARDWARE-MERGE-NEXT: ] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 11, -// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "phi_start->grant_predicate", -// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [0, 3], -// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [0], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.phi_start"] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [3], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.grant_predicate"] -// CHECK-HARDWARE-MERGE-NEXT: } -// CHECK-HARDWARE-MERGE-NEXT: ] -// CHECK-HARDWARE-MERGE-NEXT: } -// CHECK-HARDWARE-MERGE-NEXT: ] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "template_id": 1, -// CHECK-HARDWARE-MERGE-NEXT: "instance_count": 2, -// CHECK-HARDWARE-MERGE-NEXT: "supported_single_ops": ["neura.grant_once", "neura.grant_predicate", "neura.icmp"], -// CHECK-HARDWARE-MERGE-NEXT: "supported_composite_ops": [ -// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 2, "name": "fused_op:icmp->grant_predicate->grant_predicate"}, -// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 3, "name": "icmp->grant_predicate"} -// CHECK-HARDWARE-MERGE-NEXT: ], -// CHECK-HARDWARE-MERGE-NEXT: "functional_units": [ -// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 0, "op_type": "neura.icmp"}, -// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 1, "op_type": "neura.grant_predicate"}, -// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 2, "op_type": "neura.grant_predicate"} -// CHECK-HARDWARE-MERGE-NEXT: ], -// CHECK-HARDWARE-MERGE-NEXT: "fu_connections": [ -// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 0, "to_fu": 1}, -// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 0, "to_fu": 2} -// CHECK-HARDWARE-MERGE-NEXT: ], -// CHECK-HARDWARE-MERGE-NEXT: "pattern_execution_plans": [ -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 2, -// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "fused_op:icmp->grant_predicate->grant_predicate", -// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [0, 1, 2], -// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [0], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.icmp"] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [1, 2], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.grant_predicate", "neura.grant_predicate"] -// CHECK-HARDWARE-MERGE-NEXT: } -// CHECK-HARDWARE-MERGE-NEXT: ] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 3, -// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "icmp->grant_predicate", -// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [0, 1], -// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [0], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.icmp"] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [1], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.grant_predicate"] -// CHECK-HARDWARE-MERGE-NEXT: } -// CHECK-HARDWARE-MERGE-NEXT: ] -// CHECK-HARDWARE-MERGE-NEXT: } -// CHECK-HARDWARE-MERGE-NEXT: ] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "template_id": 2, -// CHECK-HARDWARE-MERGE-NEXT: "instance_count": 1, -// CHECK-HARDWARE-MERGE-NEXT: "supported_single_ops": ["neura.grant_once", "neura.grant_predicate", "neura.phi_start"], -// CHECK-HARDWARE-MERGE-NEXT: "supported_composite_ops": [ -// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 5, "name": "grant_once->fused_op:phi_start->phi_start"}, -// CHECK-HARDWARE-MERGE-NEXT: {"pattern_id": 8, "name": "grant_once->phi_start"} -// CHECK-HARDWARE-MERGE-NEXT: ], -// CHECK-HARDWARE-MERGE-NEXT: "functional_units": [ -// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 0, "op_type": "neura.grant_once"}, -// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 1, "op_type": "neura.phi_start"}, -// CHECK-HARDWARE-MERGE-NEXT: {"fu_id": 2, "op_type": "neura.phi_start"} -// CHECK-HARDWARE-MERGE-NEXT: ], -// CHECK-HARDWARE-MERGE-NEXT: "fu_connections": [ -// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 0, "to_fu": 1}, -// CHECK-HARDWARE-MERGE-NEXT: {"from_fu": 1, "to_fu": 2} -// CHECK-HARDWARE-MERGE-NEXT: ], -// CHECK-HARDWARE-MERGE-NEXT: "pattern_execution_plans": [ -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 8, -// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "grant_once->phi_start", -// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [0, 1], -// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [0], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.grant_once"] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [1], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.phi_start"] -// CHECK-HARDWARE-MERGE-NEXT: } -// CHECK-HARDWARE-MERGE-NEXT: ] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "pattern_id": 5, -// CHECK-HARDWARE-MERGE-NEXT: "pattern_name": "grant_once->fused_op:phi_start->phi_start", -// CHECK-HARDWARE-MERGE-NEXT: "fu_mapping": [0, 1, 2], -// CHECK-HARDWARE-MERGE-NEXT: "execution_stages": [ -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 0, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [0], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.grant_once"] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 1, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [1], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.phi_start"] -// CHECK-HARDWARE-MERGE-NEXT: }, -// CHECK-HARDWARE-MERGE-NEXT: { -// CHECK-HARDWARE-MERGE-NEXT: "stage": 2, -// CHECK-HARDWARE-MERGE-NEXT: "parallel_fus": [2], -// CHECK-HARDWARE-MERGE-NEXT: "parallel_ops": ["neura.phi_start"] -// CHECK-HARDWARE-MERGE-NEXT: } -// CHECK-HARDWARE-MERGE-NEXT: ] -// CHECK-HARDWARE-MERGE-NEXT: } -// CHECK-HARDWARE-MERGE-NEXT: ] -// CHECK-HARDWARE-MERGE-NEXT: } -// CHECK-HARDWARE-MERGE-NEXT: ] -// CHECK-HARDWARE-MERGE-NEXT: } -// CHECK-HARDWARE-MERGE-NEXT: } +// CHECK-HARDWARE-MERGE: "hardware_configuration": { +// CHECK-HARDWARE-MERGE: "summary": { +// CHECK-HARDWARE-MERGE: "total_templates": 3 +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: "hardware_templates": [ +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "template_id": 0, +// CHECK-HARDWARE-MERGE: "instance_count": 2, +// CHECK-HARDWARE-MERGE: "supported_single_ops": ["neura.gep", "neura.grant_once", "neura.grant_predicate", "neura.load", "neura.phi_start", "neura.store"], +// CHECK-HARDWARE-MERGE: "supported_composite_ops": [ +// CHECK-HARDWARE-MERGE: {"pattern_id": 9, "name": "phi_start->fused_op:gep->load"}, +// CHECK-HARDWARE-MERGE: {"pattern_id": 0, "name": "gep->load"}, +// CHECK-HARDWARE-MERGE: {"pattern_id": 11, "name": "phi_start->grant_predicate"} +// CHECK-HARDWARE-MERGE: ], +// CHECK-HARDWARE-MERGE: "functional_units": [ +// CHECK-HARDWARE-MERGE: {"fu_id": 0, "op_type": "neura.phi_start"}, +// CHECK-HARDWARE-MERGE: {"fu_id": 1, "op_type": "neura.gep"}, +// CHECK-HARDWARE-MERGE: {"fu_id": 2, "op_type": "neura.load"}, +// CHECK-HARDWARE-MERGE: {"fu_id": 3, "op_type": "neura.grant_predicate"} +// CHECK-HARDWARE-MERGE: ], +// CHECK-HARDWARE-MERGE: "fu_connections": [ +// CHECK-HARDWARE-MERGE: {"from_fu": 0, "to_fu": 1}, +// CHECK-HARDWARE-MERGE: {"from_fu": 0, "to_fu": 3}, +// CHECK-HARDWARE-MERGE: {"from_fu": 1, "to_fu": 2} +// CHECK-HARDWARE-MERGE: ], +// CHECK-HARDWARE-MERGE: "pattern_execution_plans": [ +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "pattern_id": 9, +// CHECK-HARDWARE-MERGE: "pattern_name": "phi_start->fused_op:gep->load", +// CHECK-HARDWARE-MERGE: "fu_mapping": [0, 1, 2], +// CHECK-HARDWARE-MERGE: "execution_stages": [ +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 0, +// CHECK-HARDWARE-MERGE: "parallel_fus": [0], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.phi_start"] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 1, +// CHECK-HARDWARE-MERGE: "parallel_fus": [1], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.gep"] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 2, +// CHECK-HARDWARE-MERGE: "parallel_fus": [2], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.load"] +// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE: ] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "pattern_id": 0, +// CHECK-HARDWARE-MERGE: "pattern_name": "gep->load", +// CHECK-HARDWARE-MERGE: "fu_mapping": [1, 2], +// CHECK-HARDWARE-MERGE: "execution_stages": [ +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 0, +// CHECK-HARDWARE-MERGE: "parallel_fus": [1], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.gep"] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 1, +// CHECK-HARDWARE-MERGE: "parallel_fus": [2], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.load"] +// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE: ] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "pattern_id": 11, +// CHECK-HARDWARE-MERGE: "pattern_name": "phi_start->grant_predicate", +// CHECK-HARDWARE-MERGE: "fu_mapping": [0, 3], +// CHECK-HARDWARE-MERGE: "execution_stages": [ +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 0, +// CHECK-HARDWARE-MERGE: "parallel_fus": [0], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.phi_start"] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 1, +// CHECK-HARDWARE-MERGE: "parallel_fus": [3], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.grant_predicate"] +// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE: ] +// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE: ] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "template_id": 1, +// CHECK-HARDWARE-MERGE: "instance_count": 2, +// CHECK-HARDWARE-MERGE: "supported_single_ops": ["neura.grant_once", "neura.grant_predicate", "neura.icmp"], +// CHECK-HARDWARE-MERGE: "supported_composite_ops": [ +// CHECK-HARDWARE-MERGE: {"pattern_id": 2, "name": "fused_op:icmp->grant_predicate->grant_predicate"}, +// CHECK-HARDWARE-MERGE: {"pattern_id": 3, "name": "icmp->grant_predicate"} +// CHECK-HARDWARE-MERGE: ], +// CHECK-HARDWARE-MERGE: "functional_units": [ +// CHECK-HARDWARE-MERGE: {"fu_id": 0, "op_type": "neura.icmp"}, +// CHECK-HARDWARE-MERGE: {"fu_id": 1, "op_type": "neura.grant_predicate"}, +// CHECK-HARDWARE-MERGE: {"fu_id": 2, "op_type": "neura.grant_predicate"} +// CHECK-HARDWARE-MERGE: ], +// CHECK-HARDWARE-MERGE: "fu_connections": [ +// CHECK-HARDWARE-MERGE: {"from_fu": 0, "to_fu": 1}, +// CHECK-HARDWARE-MERGE: {"from_fu": 0, "to_fu": 2} +// CHECK-HARDWARE-MERGE: ], +// CHECK-HARDWARE-MERGE: "pattern_execution_plans": [ +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "pattern_id": 2, +// CHECK-HARDWARE-MERGE: "pattern_name": "fused_op:icmp->grant_predicate->grant_predicate", +// CHECK-HARDWARE-MERGE: "fu_mapping": [0, 1, 2], +// CHECK-HARDWARE-MERGE: "execution_stages": [ +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 0, +// CHECK-HARDWARE-MERGE: "parallel_fus": [0], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.icmp"] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 1, +// CHECK-HARDWARE-MERGE: "parallel_fus": [1, 2], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.grant_predicate", "neura.grant_predicate"] +// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE: ] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "pattern_id": 3, +// CHECK-HARDWARE-MERGE: "pattern_name": "icmp->grant_predicate", +// CHECK-HARDWARE-MERGE: "fu_mapping": [0, 1], +// CHECK-HARDWARE-MERGE: "execution_stages": [ +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 0, +// CHECK-HARDWARE-MERGE: "parallel_fus": [0], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.icmp"] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 1, +// CHECK-HARDWARE-MERGE: "parallel_fus": [1], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.grant_predicate"] +// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE: ] +// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE: ] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "template_id": 2, +// CHECK-HARDWARE-MERGE: "instance_count": 1, +// CHECK-HARDWARE-MERGE: "supported_single_ops": ["neura.grant_once", "neura.grant_predicate", "neura.phi_start"], +// CHECK-HARDWARE-MERGE: "supported_composite_ops": [ +// CHECK-HARDWARE-MERGE: {"pattern_id": 5, "name": "grant_once->fused_op:phi_start->phi_start"}, +// CHECK-HARDWARE-MERGE: {"pattern_id": 8, "name": "grant_once->phi_start"} +// CHECK-HARDWARE-MERGE: ], +// CHECK-HARDWARE-MERGE: "functional_units": [ +// CHECK-HARDWARE-MERGE: {"fu_id": 0, "op_type": "neura.grant_once"}, +// CHECK-HARDWARE-MERGE: {"fu_id": 1, "op_type": "neura.phi_start"}, +// CHECK-HARDWARE-MERGE: {"fu_id": 2, "op_type": "neura.phi_start"} +// CHECK-HARDWARE-MERGE: ], +// CHECK-HARDWARE-MERGE: "fu_connections": [ +// CHECK-HARDWARE-MERGE: {"from_fu": 0, "to_fu": 1}, +// CHECK-HARDWARE-MERGE: {"from_fu": 1, "to_fu": 2} +// CHECK-HARDWARE-MERGE: ], +// CHECK-HARDWARE-MERGE: "pattern_execution_plans": [ +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "pattern_id": 8, +// CHECK-HARDWARE-MERGE: "pattern_name": "grant_once->phi_start", +// CHECK-HARDWARE-MERGE: "fu_mapping": [0, 1], +// CHECK-HARDWARE-MERGE: "execution_stages": [ +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 0, +// CHECK-HARDWARE-MERGE: "parallel_fus": [0], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.grant_once"] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 1, +// CHECK-HARDWARE-MERGE: "parallel_fus": [1], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.phi_start"] +// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE: ] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "pattern_id": 5, +// CHECK-HARDWARE-MERGE: "pattern_name": "grant_once->fused_op:phi_start->phi_start", +// CHECK-HARDWARE-MERGE: "fu_mapping": [0, 1, 2], +// CHECK-HARDWARE-MERGE: "execution_stages": [ +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 0, +// CHECK-HARDWARE-MERGE: "parallel_fus": [0], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.grant_once"] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 1, +// CHECK-HARDWARE-MERGE: "parallel_fus": [1], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.phi_start"] +// CHECK-HARDWARE-MERGE: }, +// CHECK-HARDWARE-MERGE: { +// CHECK-HARDWARE-MERGE: "stage": 2, +// CHECK-HARDWARE-MERGE: "parallel_fus": [2], +// CHECK-HARDWARE-MERGE: "parallel_ops": ["neura.phi_start"] +// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE: ] +// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE: ] +// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE: ] +// CHECK-HARDWARE-MERGE: } +// CHECK-HARDWARE-MERGE: } From 6fb10323b83d95d2df3121649aa435d59a26ce70 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Wed, 25 Mar 2026 03:46:26 +0800 Subject: [PATCH 11/26] Update mapping utilities and state, refresh test files. --- include/NeuraDialect/Mapping/MappingState.h | 25 +- include/NeuraDialect/Mapping/mapping_util.h | 2 +- lib/NeuraDialect/Mapping/MappingState.cpp | 74 +- lib/NeuraDialect/Mapping/mapping_util.cpp | 12 +- .../global_mem_address/kernel.mlir | 7 +- .../c2llvm2mlir/nested_loop/test.mlir | 281 +++- test/code_gen/test_code_generate.mlir | 518 ++++---- .../test_code_generate_king_mesh.mlir | 132 +- test/compiler_e2e/fir/fir_kernel.mlir | 39 +- test/compiler_e2e/visualize/test.mlir | 2 +- .../perfect_nested/perfect_nested.mlir | 2 +- .../simple_loop/simple_loop.mlir | 2 +- .../simple_loop_reduction.mlir | 2 +- test/e2e/axpy/axpy_kernel.mlir | 108 +- test/e2e/bicg/bicg_int_kernel.mlir | 489 ++++--- test/e2e/bicg/bicg_kernel.mlir | 950 +++++++------- test/e2e/fft/fft_kernel.mlir | 775 ++++++----- test/e2e/fir/fir_kernel.mlir | 4 +- test/e2e/fir/fir_kernel_vec.mlir | 2 +- test/e2e/gemm/gemm_kernel.mlir | 805 +++++++++--- test/e2e/gemv/gemv_kernel.mlir | 210 ++- test/e2e/histogram/histogram_kernel.mlir | 451 +++---- test/e2e/relu/relu_kernel.mlir | 84 +- test/e2e/spmv/spmv_kernel.mlir | 1145 ++++++++--------- test/mapping_quality/branch_for.mlir | 413 +++--- test/mapping_quality/tiny_loop.mlir | 4 +- test/multi-cgra/kernel_mapping/fir/fir.mlir | 18 +- .../loop-in-kernel/loop-in-kernel.mlir | 14 +- test/multi-cgra/kernel_mapping/relu/relu.mlir | 22 +- .../irregular-loop/irregular-loop.mlir | 157 ++- .../taskflow/multi-nested/multi-nested.mlir | 540 +++++--- .../parallel-nested/parallel-nested.mlir | 70 +- .../taskflow/resnet/simple_resnet_tosa.mlir | 6 +- test/neura/ctrl/branch_for.mlir | 24 +- test/neura/for_loop/relu_test.mlir | 2 +- test/neura/fusion/test.mlir | 4 +- 36 files changed, 4203 insertions(+), 3192 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index cd143f1b..c453e991 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -84,7 +84,7 @@ class MappingState { // Note that the check is performed in II granularity. // For example, if II is 4, and we want to check (tile 2, step 5), then // it will check (tile 2, step 1), (tile 2, step 5), (tile 2, step 9), etc. - bool isAvailableAcrossTime(const MappingLoc &loc) const; + bool isAvailableAcrossTime(const MappingLoc &loc, Operation *op = nullptr) const; // Checks if a location is available for a specific occupy status. // This implements the pipeline-aware availability checking: @@ -93,7 +93,7 @@ class MappingState { // - END_PIPE_OCCUPY: available if free or IN_PIPE_OCCUPY or START_PIPE_OCCUPY // - IN_PIPE_OCCUPY: always available (can pipeline with any status) bool isAvailableForOccupyStatus(const MappingLoc &loc, - int new_occupy_status) const; + int new_occupy_status, Operation *op = nullptr) const; // Gets the occupy status at a specific location across time domain. // Returns -1 if the location is not occupied. @@ -103,7 +103,7 @@ class MappingState { // This function leverages the isAvailableAcrossTime function in each // time step. bool isAvailableAcrossTimeInRange(BasicResource *resource, int start_time, - int exclusive_end_time) const; + int exclusive_end_time, Operation *op = nullptr) const; // Checks availability of a register's cluster write port across the relevant // time steps. Returns false if a DIFFERENT register in the same @@ -166,13 +166,13 @@ class MappingState { return this->op_to_locs; } const std::unordered_map> & + std::unordered_map>> & getRegFileWriteToOccupyOperations() const { return this->reg_file_write_to_occupy_operations; } const std::unordered_map> & + std::unordered_map>> & getRegFileReadToOccupyOperations() const { return this->reg_file_read_to_occupy_operations; } @@ -192,14 +192,14 @@ class MappingState { } void setRegFileWriteToOccupyOperations( const std::unordered_map> + std::unordered_map>> &records) { this->reg_file_write_to_occupy_operations = records; } void setRegFileReadToOccupyOperations( const std::unordered_map> + std::unordered_map>> &records) { this->reg_file_read_to_occupy_operations = records; } @@ -221,9 +221,10 @@ class MappingState { // that canonical time slot. At most one writer is allowed per cluster per // slot, enforcing the hardware constraint that a register cluster supports // only a single write port per cycle. However, multiple writes to the SAME - // register are allowed (idempotent). + // register are allowed (idempotent). Storing the reference count as the pair + // value ensures proper tracking during overlaps or backtracking. std::unordered_map> + std::unordered_map>> reg_file_write_to_occupy_operations; // Record table for register cluster read occupancy, keyed by (RegisterFile*, @@ -232,7 +233,7 @@ class MappingState { // (shared read), but reads from DIFFERENT registers in the same cluster are // rejected (only one read port). std::unordered_map> + std::unordered_map>> reg_file_read_to_occupy_operations; // Records the write operation for a register cluster slot. @@ -272,10 +273,10 @@ class MappingStateSnapshot { std::map loc_to_op; std::map> op_to_locs; std::unordered_map> + std::unordered_map>> reg_file_write_to_occupy_operations; std::unordered_map> + std::unordered_map>> reg_file_read_to_occupy_operations; }; } // namespace neura diff --git a/include/NeuraDialect/Mapping/mapping_util.h b/include/NeuraDialect/Mapping/mapping_util.h index fd2f2329..a62a0979 100644 --- a/include/NeuraDialect/Mapping/mapping_util.h +++ b/include/NeuraDialect/Mapping/mapping_util.h @@ -114,7 +114,7 @@ bool canReachLocInTime(const std::vector &producers, // The end_time is exclusive, meaning the register should be available // until end_time - 1. Returns nullptr if no available register found. Register *getAvailableRegister(const MappingState &mapping_state, Tile *tile, - int start_time, int exclusive_end_time); + int start_time, int exclusive_end_time, Operation *op = nullptr); // Gets the execution latency of an operation from its "latency" attribute. // Returns 1 (single-cycle) if the attribute is not present. diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index 17a38ecc..edbfb693 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -1,4 +1,6 @@ #include "NeuraDialect/Mapping/MappingState.h" +#include "NeuraDialect/Mapping/mapping_util.h" +#include "NeuraDialect/NeuraOps.h" #include "mlir/IR/Attributes.h" #include "mlir/IR/BuiltinAttributes.h" #include "mlir/IR/BuiltinTypes.h" @@ -53,13 +55,14 @@ bool MappingState::addWriteToRegFileRecord(Register *reg, int time_step) { // -> same register, same port address, no conflict. if (it != slot_map.end()) { // Same register -> OK (idempotent). - if (it->second == reg) { + if (it->second.first == reg) { + it->second.second++; return true; } // Different register -> conflict (only one write port). return false; } - slot_map[canonical_step] = reg; + slot_map[canonical_step] = {reg, 1}; return true; } @@ -84,13 +87,14 @@ bool MappingState::addReadToRegFileRecord(Register *reg, int time_step) { // -> only one read port, cannot drive two different addresses. if (it != slot_map.end()) { // Same register -> OK (shared read). - if (it->second == reg) { + if (it->second.first == reg) { + it->second.second++; return true; } // Different register -> conflict (only one read port). return false; } - slot_map[canonical_step] = reg; + slot_map[canonical_step] = {reg, 1}; return true; } @@ -108,11 +112,14 @@ void MappingState::removeWriteFromRegFileRecord(Register *reg, int time_step) { if (slot_it == reg_file_it->second.end()) { return; } - // Removes the entry to free the cluster slot. - reg_file_it->second.erase(slot_it); - // Cleans up empty entries to keep the map compact. - if (reg_file_it->second.empty()) { - reg_file_write_to_occupy_operations.erase(reg_file_it); + slot_it->second.second--; + if (slot_it->second.second == 0) { + // Removes the entry to free the cluster slot. + reg_file_it->second.erase(slot_it); + // Cleans up empty entries to keep the map compact. + if (reg_file_it->second.empty()) { + reg_file_write_to_occupy_operations.erase(reg_file_it); + } } } @@ -130,11 +137,14 @@ void MappingState::removeReadFromRegFileRecord(Register *reg, int time_step) { if (slot_it == reg_file_it->second.end()) { return; } - // Removes the entry to free the cluster slot. - reg_file_it->second.erase(slot_it); - // Cleans up empty entries to keep the map compact. - if (reg_file_it->second.empty()) { - reg_file_read_to_occupy_operations.erase(reg_file_it); + slot_it->second.second--; + if (slot_it->second.second == 0) { + // Removes the entry to free the cluster slot. + reg_file_it->second.erase(slot_it); + // Cleans up empty entries to keep the map compact. + if (reg_file_it->second.empty()) { + reg_file_read_to_occupy_operations.erase(reg_file_it); + } } } @@ -158,7 +168,7 @@ bool MappingState::isRegisterWriteAvailableAcrossTime(Register *reg, return true; } // Same register -> no conflict. - if (slot_it->second == reg) { + if (slot_it->second.first == reg) { return true; } // Different register -> conflict (only one write port). @@ -201,7 +211,7 @@ bool MappingState::isRegisterReadAvailableAcrossTime(Register *reg, return true; } // Same register -> no conflict (shared read). - if (slot_it->second == reg) { + if (slot_it->second.first == reg) { return true; } // Different register -> conflict (only one read port). @@ -327,12 +337,12 @@ void MappingState::unbindOp(Operation *op) { op_to_locs.erase(it); } -bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { +bool MappingState::isAvailableAcrossTime(const MappingLoc &loc, Operation *op) const { // Checks whether the resource at the given (resource, time_step) is free, // considering both occupancy state and the register-cluster constraint. // Returns true if the (resource, t) slot is free (or only IN_PIPE_OCCUPY). - auto isSlotFree = [this](BasicResource *resource, int t) -> bool { + auto isSlotFree = [this, op](BasicResource *resource, int t) -> bool { std::map>>::const_iterator it = occupied_locs.find({resource, t}); @@ -341,6 +351,15 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { } for (const std::pair &entry : it->second) { if (entry.first != IN_PIPE_OCCUPY) { + if (op && entry.second) { + if (auto mov1 = dyn_cast(op)) { + if (auto mov2 = dyn_cast(entry.second)) { + if (mov1.getOperand() == mov2.getOperand()) { + continue; + } + } + } + } return false; } } @@ -384,9 +403,9 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc) const { } bool MappingState::isAvailableForOccupyStatus(const MappingLoc &loc, - int new_occupy_status) const { + int new_occupy_status, Operation *op) const { // Helper lambda to check a single location against all existing entries - auto checkSingleLoc = [this, new_occupy_status](const MappingLoc &check_loc) -> bool { + auto checkSingleLoc = [this, new_occupy_status, op](const MappingLoc &check_loc) -> bool { std::map>>::const_iterator it = occupied_locs.find(check_loc); @@ -398,6 +417,17 @@ bool MappingState::isAvailableForOccupyStatus(const MappingLoc &loc, // Checks against all existing entries at this location for (const std::pair &entry : it->second) { int existing_status = entry.first; + Operation *existing_op = entry.second; + + if (op && existing_op) { + if (auto mov1 = dyn_cast(op)) { + if (auto mov2 = dyn_cast(existing_op)) { + if (mov1.getOperand() == mov2.getOperand()) { + continue; + } + } + } + } // Implements the pipeline-aware availability rules: // - SINGLE_OCCUPY (0): exclusive, no other op can share @@ -487,12 +517,12 @@ int MappingState::getOccupyStatusAcrossTime(const MappingLoc &loc) const { bool MappingState::isAvailableAcrossTimeInRange(BasicResource *resource, int start_time, - int exclusive_end_time) const { + int exclusive_end_time, Operation *op) const { // Checks the availability for each time step across time domain. for (int t = start_time; t < exclusive_end_time; ++t) { MappingLoc check_loc = {resource, t}; // Checks the availability across time domain. - if (!isAvailableAcrossTime(check_loc)) { + if (!isAvailableAcrossTime(check_loc, op)) { return false; } } diff --git a/lib/NeuraDialect/Mapping/mapping_util.cpp b/lib/NeuraDialect/Mapping/mapping_util.cpp index 3e4976bb..7711562c 100644 --- a/lib/NeuraDialect/Mapping/mapping_util.cpp +++ b/lib/NeuraDialect/Mapping/mapping_util.cpp @@ -550,7 +550,7 @@ bool mlir::neura::tryRouteBackwardMove(Operation *mov_op, MappingLoc src_loc, Register *mlir::neura::getAvailableRegister(const MappingState &state, Tile *tile, int start_time, - int exclusive_end_time) { + int exclusive_end_time, Operation *op) { // Finds the first register that is free across the requested range AND // satisfies the single-port cluster constraints: // - Write port: at start_time, only one register per RegisterFile may be @@ -561,7 +561,7 @@ Register *mlir::neura::getAvailableRegister(const MappingState &state, // simultaneously on the same RegisterFile. for (Register *reg : tile->getRegisters()) { if (!state.isAvailableAcrossTimeInRange(reg, start_time, - exclusive_end_time)) { + exclusive_end_time, op)) { continue; } // Check cluster write-port constraint at the write time step. @@ -606,7 +606,7 @@ bool mlir::neura::tryRouteDataMove(Operation *mov_op, MappingLoc src_loc, // Uses register as routing resource within the same tile. // Finds an available register to store the data. Register *available_reg = getAvailableRegister( - state, src_tile, src_loc.time_step, exclusive_deadline_step); + state, src_tile, src_loc.time_step, exclusive_deadline_step, mov_op); if (!available_reg) { llvm::outs() << "[tryRouteDataMove] Cannot find available register on Tile#" @@ -661,7 +661,7 @@ bool mlir::neura::tryRouteDataMove(Operation *mov_op, MappingLoc src_loc, // Arrives early, needs register on destination tile to wait. Register *wait_reg = getAvailableRegister(state, dst_tile, current_state.current_time, - exclusive_deadline_step); + exclusive_deadline_step, mov_op); if (!wait_reg) { llvm::outs() << "[tryRouteDataMove] Cannot find available waiting" "register on destination Tile#" @@ -693,7 +693,7 @@ bool mlir::neura::tryRouteDataMove(Operation *mov_op, MappingLoc src_loc, MappingLoc link_loc = {out_link, current_state.current_time}; // Checks if link is available at current time step. - if (!state.isAvailableAcrossTime(link_loc)) { + if (!state.isAvailableAcrossTime(link_loc, mov_op)) { continue; } @@ -712,7 +712,7 @@ bool mlir::neura::tryRouteDataMove(Operation *mov_op, MappingLoc src_loc, // Option 2: Uses register on current tile to wait one time step. Register *wait_register = getAvailableRegister( state, current_state.current_tile, current_state.current_time, - current_state.current_time + 1); + current_state.current_time + 1, mov_op); if (wait_register) { int next_time = current_state.current_time + 1; // Checks if this(tile, time) combination has been visited. diff --git a/test/Conversion/c2llvm2mlir/global_mem_address/kernel.mlir b/test/Conversion/c2llvm2mlir/global_mem_address/kernel.mlir index bf4e3be1..a5eccf6e 100644 --- a/test/Conversion/c2llvm2mlir/global_mem_address/kernel.mlir +++ b/test/Conversion/c2llvm2mlir/global_mem_address/kernel.mlir @@ -18,8 +18,8 @@ // RUN: -o %t-dataflow.mlir // RUN: FileCheck %s --input-file=%t-dataflow.mlir --check-prefix=DATAFLOW -// DATAFLOW: llvm.mlir.global external hidden unnamed_addr @run_gemv_relu_gemv.y() {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<4 x i32> -// DATAFLOW-NEXT: func.func @kernel_gemv_relu_gemv() -> (i32 {llvm.range = #llvm.constant_range}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// DATAFLOW: llvm.mlir.global external hidden unnamed_addr @run_gemv_relu_gemv.y() {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<4 x i32> +// DATAFLOW-NEXT: func.func @kernel_gemv_relu_gemv() -> (i32 {llvm.range = #llvm.constant_range}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // DATAFLOW-NEXT: %0 = "neura.constant"() <{value = @run_gemv_relu_gemv.y}> : () -> !neura.data // DATAFLOW-NEXT: %1 = "neura.constant"() <{value = 0 : i8}> : () -> !neura.data // DATAFLOW-NEXT: %2 = "neura.constant"() <{value = 16 : i64}> : () -> !neura.data @@ -75,4 +75,5 @@ // DATAFLOW-NEXT: %45 = "neura.and"(%44) {rhs_value = 255 : i32} : (!neura.data) -> !neura.data // DATAFLOW-NEXT: neura.return_value %45 : !neura.data // DATAFLOW-NEXT: neura.yield -// DATAFLOW-NEXT: } \ No newline at end of file +// DATAFLOW-NEXT: } +// DATAFLOW-NEXT: } diff --git a/test/Conversion/c2llvm2mlir/nested_loop/test.mlir b/test/Conversion/c2llvm2mlir/nested_loop/test.mlir index cae800c4..2999122f 100644 --- a/test/Conversion/c2llvm2mlir/nested_loop/test.mlir +++ b/test/Conversion/c2llvm2mlir/nested_loop/test.mlir @@ -32,4 +32,283 @@ // CHECK-LLVM2NEURA: %188 = neura.sext %187 : !neura.data -> !neura.data // CHECK-LLVM2NEURA: %207 = "neura.mul"(%205, %206) : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.noundef}, %arg1: !llvm.ptr {llvm.noundef}, %arg2: !llvm.ptr {llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", frame_pointer = #llvm.framePointerKind, linkage = #llvm.linkage, mapping_info = {compiled_ii = 14 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, no_inline, no_unwind, optimize_none, passthrough = ["mustprogress", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 0 : i64, visibility_ = 0 : i64} { \ No newline at end of file +// CHECK-LLVM2NEURA-MAP: module attributes {dlti.dl_spec = {{.*}}} { +// CHECK-LLVM2NEURA-MAP-NEXT: llvm.mlir.global external @input(dense<1> : tensor<32xi32>) {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<32 x i32> +// CHECK-LLVM2NEURA-MAP-NEXT: llvm.mlir.global external @output(dense<0> : tensor<32xi32>) {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<32 x i32> +// CHECK-LLVM2NEURA-MAP-NEXT: llvm.mlir.global external @coefficients(dense<[25, 150, 375, -225, 50, 75, -300, 125, 25, 150, 375, -225, 50, 75, -300, 125, 25, 150, 375, -225, 50, 75, -300, 125, 25, 150, 375, -225, 50, 75, -300, 125]> : tensor<32xi32>) {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<32 x i32> +// CHECK-LLVM2NEURA-MAP-NEXT: llvm.mlir.global private unnamed_addr constant @".str"("output: %d\0A\00") {addr_space = 0 : i32, alignment = 1 : i64, dso_local} +// CHECK-LLVM2NEURA-MAP-NEXT: llvm.func @main() -> (i32 {llvm.noundef}) attributes {frame_pointer = #llvm.framePointerKind, no_inline, optimize_none, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic"} { +// CHECK-LLVM2NEURA-MAP-NEXT: %0 = llvm.mlir.constant(1 : i32) : i32 +// CHECK-LLVM2NEURA-MAP-NEXT: %1 = llvm.mlir.constant(0 : i32) : i32 +// CHECK-LLVM2NEURA-MAP-NEXT: %2 = llvm.mlir.addressof @input : !llvm.ptr +// CHECK-LLVM2NEURA-MAP-NEXT: %3 = llvm.mlir.addressof @output : !llvm.ptr +// CHECK-LLVM2NEURA-MAP-NEXT: %4 = llvm.mlir.addressof @coefficients : !llvm.ptr +// CHECK-LLVM2NEURA-MAP-NEXT: %5 = llvm.mlir.addressof @".str" : !llvm.ptr +// CHECK-LLVM2NEURA-MAP-NEXT: %6 = llvm.alloca %0 x i32 {alignment = 4 : i64} : (i32) -> !llvm.ptr +// CHECK-LLVM2NEURA-MAP-NEXT: llvm.store %1, %6 {alignment = 4 : i64} : i32, !llvm.ptr +// CHECK-LLVM2NEURA-MAP-NEXT: %7 = func.call @_Z6kernelPiS_S_(%2, %3, %4) : (!llvm.ptr, !llvm.ptr, !llvm.ptr) -> !llvm.void +// CHECK-LLVM2NEURA-MAP-NEXT: %8 = llvm.load %3 {alignment = 16 : i64} : !llvm.ptr -> i32 +// CHECK-LLVM2NEURA-MAP-NEXT: %9 = llvm.call @printf(%5, %8) vararg(!llvm.func) : (!llvm.ptr, i32) -> i32 +// CHECK-LLVM2NEURA-MAP-NEXT: llvm.return %1 : i32 +// CHECK-LLVM2NEURA-MAP-NEXT: } +// CHECK-LLVM2NEURA-MAP-NEXT: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.noundef}, %arg1: !llvm.ptr {llvm.noundef}, %arg2: !llvm.ptr {llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", frame_pointer = #llvm.framePointerKind, linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, no_inline, no_unwind, optimize_none, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 0 : i64, visibility_ = 0 : i64} { +// CHECK-LLVM2NEURA-MAP-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> {dfg_id = 1 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 1 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %2 = "neura.constant"() <{value = "%arg2"}> {dfg_id = 2 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %3 = "neura.grant_once"() <{constant_value = 1 : i32}> {dfg_id = 3 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 3 : i32, y = 3 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %4 = "neura.constant"() <{value = 1 : i32}> {dfg_id = 4 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %5 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 5 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 3 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %6 = "neura.constant"() <{value = 0 : i32}> {dfg_id = 6 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %7 = "neura.grant_once"() <{constant_value = 32 : i32}> {dfg_id = 7 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %8 = "neura.data_mov"(%4) {dfg_id = 29 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %9 = neura.alloca %8 : !neura.data {dfg_id = 38 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 0 : i32}]} -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 47 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %11 = "neura.grant_once"(%10) {dfg_id = 59 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %12 = "neura.data_mov"(%4) {dfg_id = 30 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %13 = neura.alloca %12 : !neura.data {dfg_id = 39 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 49 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %15 = "neura.grant_once"(%14) {dfg_id = 61 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 31 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 0 : i32}, {id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 1 : i32}, {id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %17 = neura.alloca %16 : !neura.data {dfg_id = 40 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}]} -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %18 = "neura.data_mov"(%17) {dfg_id = 51 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %19 = "neura.grant_once"(%18) {dfg_id = 63 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %20 = "neura.data_mov"(%4) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %21 = neura.alloca %20 : !neura.data {dfg_id = 41 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}]} -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %22 = "neura.data_mov"(%21) {dfg_id = 53 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %23 = "neura.grant_once"(%22) {dfg_id = 65 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %24 = "neura.data_mov"(%4) {dfg_id = 33 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %25 = neura.alloca %24 : !neura.data {dfg_id = 42 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}]} -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 54 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %27 = "neura.grant_once"(%26) {dfg_id = 66 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %28 = "neura.data_mov"(%0) {dfg_id = 25 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %29 = "neura.data_mov"(%9) {dfg_id = 46 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 2008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 2008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 2008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 2008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 2008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%28, %29) {dfg_id = 58 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: %30 = "neura.data_mov"(%1) {dfg_id = 26 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %31 = "neura.data_mov"(%13) {dfg_id = 48 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 3000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 3000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 3000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 3000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%30, %31) {dfg_id = 60 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: %32 = "neura.data_mov"(%2) {dfg_id = 27 : i32, mapping_locs = [{id = 3001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 3001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %33 = "neura.data_mov"(%17) {dfg_id = 50 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 3008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 3008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 3008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 3008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 3008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 3008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 3008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 3008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%32, %33) {dfg_id = 62 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: %34 = "neura.data_mov"(%6) {dfg_id = 35 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %35 = "neura.data_mov"(%21) {dfg_id = 52 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 26 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 12009 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 4 : i32}, {id = 12009 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 12009 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}, {id = 12009 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 12009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 12009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 12009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 12009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 12009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 12009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 12009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 12009 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 12009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%34, %35) {dfg_id = 64 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: %36 = neura.reserve {dfg_id = 8 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %37 = "neura.data_mov"(%3) {dfg_id = 28 : i32, mapping_locs = [{id = 47 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %38 = neura.phi_start %37, %36 {dfg_id = 37 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %39 = neura.reserve {dfg_id = 9 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %40 = "neura.data_mov"(%15) {dfg_id = 68 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %41 = neura.phi_start %40, %39 {dfg_id = 73 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %42 = neura.reserve {dfg_id = 10 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %43 = "neura.data_mov"(%19) {dfg_id = 69 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %44 = neura.phi_start %43, %42 {dfg_id = 74 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %45 = neura.reserve {dfg_id = 11 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %46 = "neura.data_mov"(%11) {dfg_id = 67 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %47 = neura.phi_start %46, %45 {dfg_id = 72 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %48 = neura.reserve {dfg_id = 12 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %49 = "neura.data_mov"(%27) {dfg_id = 71 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %50 = neura.phi_start %49, %48 {dfg_id = 76 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %51 = neura.reserve {dfg_id = 13 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %52 = "neura.data_mov"(%5) {dfg_id = 34 : i32, mapping_locs = [{id = 46 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %53 = neura.phi_start %52, %51 {dfg_id = 43 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %54 = neura.reserve {dfg_id = 14 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %55 = "neura.data_mov"(%7) {dfg_id = 36 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %56 = neura.phi_start %55, %54 {dfg_id = 44 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %57 = neura.reserve {dfg_id = 15 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %58 = "neura.data_mov"(%23) {dfg_id = 70 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %59 = neura.phi_start %58, %57 {dfg_id = 75 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %60 = "neura.data_mov"(%59) {dfg_id = 81 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %61 = "neura.load"(%60) {dfg_id = 83 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %62 = "neura.data_mov"(%61) {dfg_id = 84 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %63 = "neura.data_mov"(%56) {dfg_id = 57 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %64 = "neura.icmp"(%62, %63) <{cmpType = "slt"}> {dfg_id = 85 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %65 = "neura.data_mov"(%64) {dfg_id = 94 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %66 = "neura.not"(%65) {dfg_id = 103 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 55 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %68 = "neura.data_mov"(%64) {dfg_id = 93 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 20 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 34 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 456 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 456 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 456 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 456 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 456 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 456 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %69 = neura.grant_predicate %67, %68 {dfg_id = 102 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %70 = "neura.data_mov"(%50) {dfg_id = 82 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %71 = "neura.data_mov"(%64) {dfg_id = 92 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %72 = neura.grant_predicate %70, %71 {dfg_id = 101 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %73 = "neura.data_mov"(%56) {dfg_id = 56 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %74 = "neura.data_mov"(%64) {dfg_id = 91 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %75 = neura.grant_predicate %73, %74 {dfg_id = 100 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %76 = "neura.data_mov"(%47) {dfg_id = 77 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %77 = "neura.data_mov"(%64) {dfg_id = 90 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %78 = neura.grant_predicate %76, %77 {dfg_id = 99 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %79 = "neura.data_mov"(%59) {dfg_id = 80 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %80 = "neura.data_mov"(%64) {dfg_id = 89 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %81 = neura.grant_predicate %79, %80 {dfg_id = 98 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %82 = "neura.data_mov"(%44) {dfg_id = 79 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %83 = "neura.data_mov"(%64) {dfg_id = 88 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %84 = neura.grant_predicate %82, %83 {dfg_id = 97 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %85 = "neura.data_mov"(%41) {dfg_id = 78 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %86 = "neura.data_mov"(%64) {dfg_id = 87 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %87 = neura.grant_predicate %85, %86 {dfg_id = 96 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %88 = "neura.data_mov"(%38) {dfg_id = 45 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %89 = "neura.data_mov"(%64) {dfg_id = 86 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 20 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 321 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 321 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 321 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 321 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 321 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %90 = neura.grant_predicate %88, %89 {dfg_id = 95 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %91 = "neura.data_mov"(%66) {dfg_id = 114 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %92 = "neura.data_mov"(%66) {dfg_id = 115 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %93 = neura.grant_predicate %91, %92 {dfg_id = 125 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %94 = "neura.data_mov"(%93) {dfg_id = 144 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.return_void %94 : !neura.data {dfg_id = 146 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} +// CHECK-LLVM2NEURA-MAP-NEXT: %95 = "neura.data_mov"(%69) {dfg_id = 113 : i32, mapping_locs = [{id = 43 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 40 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 39 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 25 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %96 = "neura.data_mov"(%72) {dfg_id = 111 : i32, mapping_locs = [{id = 4011 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 6 : i32}, {id = 4011 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 7 : i32}, {id = 4011 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 8 : i32}, {id = 4011 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 9 : i32}, {id = 4011 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 10 : i32}, {id = 4011 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 11 : i32}, {id = 4011 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 12 : i32}, {id = 4011 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 13 : i32}, {id = 4011 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 14 : i32}, {id = 4011 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 15 : i32}, {id = 4011 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 16 : i32}, {id = 4011 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 17 : i32}, {id = 4011 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%95, %96) {dfg_id = 124 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: %97 = neura.reserve {dfg_id = 16 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %98 = "neura.data_mov"(%69) {dfg_id = 112 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %99 = neura.phi_start %98, %97 {dfg_id = 123 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %100 = neura.reserve {dfg_id = 17 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %101 = "neura.data_mov"(%90) {dfg_id = 104 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %102 = neura.phi_start %101, %100 {dfg_id = 116 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %103 = neura.reserve {dfg_id = 18 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %104 = "neura.data_mov"(%87) {dfg_id = 105 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %105 = neura.phi_start %104, %103 {dfg_id = 117 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %106 = neura.reserve {dfg_id = 19 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %107 = "neura.data_mov"(%84) {dfg_id = 106 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %108 = neura.phi_start %107, %106 {dfg_id = 118 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %109 = neura.reserve {dfg_id = 20 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %110 = "neura.data_mov"(%81) {dfg_id = 107 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 1008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %111 = neura.phi_start %110, %109 {dfg_id = 119 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %112 = neura.reserve {dfg_id = 21 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %113 = "neura.data_mov"(%78) {dfg_id = 108 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %114 = neura.phi_start %113, %112 {dfg_id = 120 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %115 = neura.reserve {dfg_id = 22 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %116 = "neura.data_mov"(%75) {dfg_id = 109 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %117 = neura.phi_start %116, %115 {dfg_id = 121 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %118 = neura.reserve {dfg_id = 23 : i32} : !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %119 = "neura.data_mov"(%72) {dfg_id = 110 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %120 = neura.phi_start %119, %118 {dfg_id = 122 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %121 = "neura.data_mov"(%120) {dfg_id = 141 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %122 = "neura.load"(%121) {dfg_id = 145 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %123 = "neura.data_mov"(%122) {dfg_id = 147 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %124 = "neura.data_mov"(%117) {dfg_id = 138 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %125 = "neura.icmp"(%123, %124) <{cmpType = "slt"}> {dfg_id = 148 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %126 = "neura.data_mov"(%114) {dfg_id = 135 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %127 = "neura.data_mov"(%125) {dfg_id = 157 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 33 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %128 = neura.grant_predicate %126, %127 {dfg_id = 166 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %129 = "neura.data_mov"(%111) {dfg_id = 133 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %130 = "neura.data_mov"(%125) {dfg_id = 156 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %131 = neura.grant_predicate %129, %130 {dfg_id = 165 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %132 = "neura.data_mov"(%108) {dfg_id = 131 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %133 = "neura.data_mov"(%125) {dfg_id = 155 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 8000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %134 = neura.grant_predicate %132, %133 {dfg_id = 164 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %135 = "neura.data_mov"(%105) {dfg_id = 129 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %136 = "neura.data_mov"(%125) {dfg_id = 154 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 328 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %137 = neura.grant_predicate %135, %136 {dfg_id = 163 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %138 = "neura.data_mov"(%120) {dfg_id = 140 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %139 = "neura.data_mov"(%125) {dfg_id = 153 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %140 = neura.grant_predicate %138, %139 {dfg_id = 162 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %141 = "neura.data_mov"(%102) {dfg_id = 127 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %142 = "neura.data_mov"(%125) {dfg_id = 152 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 33 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %143 = neura.grant_predicate %141, %142 {dfg_id = 161 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %144 = "neura.data_mov"(%117) {dfg_id = 137 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %145 = "neura.data_mov"(%125) {dfg_id = 151 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %146 = neura.grant_predicate %144, %145 {dfg_id = 160 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %147 = "neura.data_mov"(%99) {dfg_id = 143 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %148 = "neura.data_mov"(%125) {dfg_id = 150 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 34 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 457 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 457 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 457 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 457 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 457 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 457 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %149 = neura.grant_predicate %147, %148 {dfg_id = 159 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %150 = "neura.data_mov"(%125) {dfg_id = 149 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %151 = "neura.not"(%150) {dfg_id = 158 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %152 = "neura.data_mov"(%111) {dfg_id = 132 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %153 = "neura.data_mov"(%151) {dfg_id = 174 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %154 = neura.grant_predicate %152, %153 {dfg_id = 199 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %155 = "neura.data_mov"(%102) {dfg_id = 126 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 20 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %156 = "neura.data_mov"(%151) {dfg_id = 173 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %157 = neura.grant_predicate %155, %156 {dfg_id = 198 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %158 = "neura.data_mov"(%117) {dfg_id = 136 : i32, mapping_locs = [{id = 304 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 304 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 304 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 304 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %159 = "neura.data_mov"(%151) {dfg_id = 172 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 289 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %160 = neura.grant_predicate %158, %159 {dfg_id = 197 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %161 = "neura.data_mov"(%99) {dfg_id = 142 : i32, mapping_locs = [{id = 43 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %162 = "neura.data_mov"(%151) {dfg_id = 171 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 416 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 416 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 416 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 416 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %163 = neura.grant_predicate %161, %162 {dfg_id = 196 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %164 = "neura.data_mov"(%120) {dfg_id = 139 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 8008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %165 = "neura.data_mov"(%151) {dfg_id = 170 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %166 = neura.grant_predicate %164, %165 {dfg_id = 195 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %167 = "neura.data_mov"(%114) {dfg_id = 134 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 208 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 208 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 208 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 208 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 208 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %168 = "neura.data_mov"(%151) {dfg_id = 169 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 33 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 201 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 201 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 201 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 201 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 201 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %169 = neura.grant_predicate %167, %168 {dfg_id = 194 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %170 = "neura.data_mov"(%108) {dfg_id = 130 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %171 = "neura.data_mov"(%151) {dfg_id = 168 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 184 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 184 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 184 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 184 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 184 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %172 = neura.grant_predicate %170, %171 {dfg_id = 193 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %173 = "neura.data_mov"(%105) {dfg_id = 128 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 336 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 336 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 336 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 336 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %174 = "neura.data_mov"(%151) {dfg_id = 167 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %175 = neura.grant_predicate %173, %174 {dfg_id = 192 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %176 = "neura.data_mov"(%154) {dfg_id = 217 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 15 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 1001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %177 = "neura.load"(%176) {dfg_id = 225 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %178 = "neura.data_mov"(%177) {dfg_id = 230 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %179 = "neura.data_mov"(%157) {dfg_id = 214 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %180 = "neura.add"(%178, %179) {dfg_id = 235 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 240 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %182 = "neura.data_mov"(%154) {dfg_id = 216 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 202 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 19 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 2001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 2001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 2001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 2001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%181, %182) {dfg_id = 245 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %154 -> %57 {dfg_id = 215 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %160 -> %54 {dfg_id = 212 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %163 -> %51 {dfg_id = 211 : i32, mapping_locs = [{id = 41 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 448 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 448 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 448 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 448 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 448 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 448 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}, {id = 448 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %166 -> %48 {dfg_id = 210 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 11 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %169 -> %45 {dfg_id = 209 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 169 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %172 -> %42 {dfg_id = 208 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %175 -> %39 {dfg_id = 207 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 29 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 169 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %157 -> %36 {dfg_id = 213 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 352 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 352 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 352 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 352 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 352 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 352 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %183 = "neura.data_mov"(%128) {dfg_id = 191 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %184 = "neura.load"(%183) {dfg_id = 206 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %185 = "neura.data_mov"(%131) {dfg_id = 189 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %186 = "neura.load"(%185) {dfg_id = 205 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %187 = "neura.data_mov"(%186) {dfg_id = 223 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %188 = neura.sext %187 {dfg_id = 229 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %189 = "neura.data_mov"(%184) {dfg_id = 224 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %190 = "neura.data_mov"(%188) {dfg_id = 234 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %191 = "neura.gep"(%189, %190) <{operandSegmentSizes = array}> {dfg_id = 239 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %192 = "neura.data_mov"(%191) {dfg_id = 244 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %193 = "neura.load"(%192) {dfg_id = 248 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %194 = "neura.data_mov"(%134) {dfg_id = 186 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %195 = "neura.load"(%194) {dfg_id = 203 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %196 = "neura.data_mov"(%131) {dfg_id = 188 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %197 = "neura.load"(%196) {dfg_id = 204 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %198 = "neura.data_mov"(%197) {dfg_id = 222 : i32, mapping_locs = [{id = 1001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %199 = neura.sext %198 {dfg_id = 228 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %200 = "neura.data_mov"(%195) {dfg_id = 221 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 42 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %201 = "neura.data_mov"(%199) {dfg_id = 233 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %202 = "neura.gep"(%200, %201) <{operandSegmentSizes = array}> {dfg_id = 238 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %203 = "neura.data_mov"(%202) {dfg_id = 243 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %204 = "neura.load"(%203) {dfg_id = 247 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %205 = "neura.data_mov"(%193) {dfg_id = 251 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 20 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %206 = "neura.data_mov"(%204) {dfg_id = 250 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 28 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %207 = "neura.mul"(%205, %206) {dfg_id = 252 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %208 = "neura.data_mov"(%137) {dfg_id = 184 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %209 = "neura.load"(%208) {dfg_id = 202 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %210 = "neura.data_mov"(%140) {dfg_id = 182 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 12000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %211 = "neura.load"(%210) {dfg_id = 201 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %212 = "neura.data_mov"(%211) {dfg_id = 219 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 12000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %213 = neura.sext %212 {dfg_id = 227 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %214 = "neura.data_mov"(%209) {dfg_id = 220 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %215 = "neura.data_mov"(%213) {dfg_id = 232 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 42 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %216 = "neura.gep"(%214, %215) <{operandSegmentSizes = array}> {dfg_id = 237 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %217 = "neura.data_mov"(%216) {dfg_id = 242 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 26 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %218 = "neura.load"(%217) {dfg_id = 246 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %219 = "neura.data_mov"(%218) {dfg_id = 249 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 41 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %220 = "neura.data_mov"(%207) {dfg_id = 253 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %221 = "neura.add"(%219, %220) {dfg_id = 254 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %222 = "neura.data_mov"(%221) {dfg_id = 255 : i32, mapping_locs = [{id = 45 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 32 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 22 : i32}, {id = 36 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 23 : i32}, {id = 22 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %223 = "neura.data_mov"(%216) {dfg_id = 241 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 32 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 36 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 22 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 3001 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 3001 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 3001 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 3001 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%222, %223) {dfg_id = 256 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 25 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: %224 = "neura.data_mov"(%140) {dfg_id = 181 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 12008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 12008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 12008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 12008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %225 = "neura.load"(%224) {dfg_id = 200 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %226 = "neura.data_mov"(%225) {dfg_id = 218 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 42 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %227 = "neura.data_mov"(%143) {dfg_id = 178 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %228 = "neura.add"(%226, %227) {dfg_id = 226 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %229 = "neura.data_mov"(%228) {dfg_id = 231 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 8016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %230 = "neura.data_mov"(%140) {dfg_id = 180 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 8009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 8009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 8009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 8009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 8009 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 8009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 8009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 8009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 8009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%229, %230) {dfg_id = 236 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %140 -> %118 {dfg_id = 179 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 4009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 4009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 4009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 4009 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 4009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 4009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %146 -> %115 {dfg_id = 176 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %128 -> %112 {dfg_id = 190 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %131 -> %109 {dfg_id = 187 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 1016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 1016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 1016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 1016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 1016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 1016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 1016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 1016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %134 -> %106 {dfg_id = 185 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 4010 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 4010 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 4010 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 4010 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 4010 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 4010 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 4010 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 4010 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 4010 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %137 -> %103 {dfg_id = 183 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %143 -> %100 {dfg_id = 177 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 194 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 194 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 194 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 194 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 194 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 194 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 194 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 194 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 194 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %149 -> %97 {dfg_id = 175 : i32, mapping_locs = [{id = 458 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 458 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 458 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 458 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 458 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 458 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 458 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 458 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 458 : i32, index_per_ii = 3 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 458 : i32, index_per_ii = 4 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.yield {dfg_id = 24 : i32} +// CHECK-LLVM2NEURA-MAP-NEXT: } +// CHECK-LLVM2NEURA-MAP-NEXT: llvm.func @printf(!llvm.ptr {llvm.noundef}, ...) -> i32 attributes {frame_pointer = #llvm.framePointerKind, passthrough = {{.*}}, ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic"} +// CHECK-LLVM2NEURA-MAP-NEXT: } diff --git a/test/code_gen/test_code_generate.mlir b/test/code_gen/test_code_generate.mlir index 81fe6906..a26c6311 100644 --- a/test/code_gen/test_code_generate.mlir +++ b/test/code_gen/test_code_generate.mlir @@ -32,73 +32,73 @@ func.func @loop_test() -> f32 { ^exit(%result: f32): return %result : f32 } -// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { -// MAPPING-NEXT: %0 = "neura.constant"() <{value = 10 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %2 = "neura.grant_once"(%1) {dfg_id = 16 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %3 = "neura.constant"() <{value = 0 : i64}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %4 = "neura.data_mov"(%3) {dfg_id = 12 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %5 = "neura.grant_once"(%4) {dfg_id = 17 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %6 = "neura.constant"() <{value = 1 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %7 = "neura.data_mov"(%6) {dfg_id = 13 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %8 = "neura.grant_once"(%7) {dfg_id = 18 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPING-NEXT: %0 = "neura.constant"() <{value = 10 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %2 = "neura.grant_once"(%1) {dfg_id = 16 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %3 = "neura.constant"() <{value = 0 : i64}> {dfg_id = 1 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %4 = "neura.data_mov"(%3) {dfg_id = 12 : i32, mapping_locs = [{id = 352 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %5 = "neura.grant_once"(%4) {dfg_id = 17 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %6 = "neura.constant"() <{value = 1 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %7 = "neura.data_mov"(%6) {dfg_id = 13 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %8 = "neura.grant_once"(%7) {dfg_id = 18 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %9 = "neura.constant"() <{value = 3.000000e+00 : f32}> {dfg_id = 3 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 14 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %11 = "neura.grant_once"(%10) {dfg_id = 19 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.constant"() <{value = 0.000000e+00 : f32}> {dfg_id = 4 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 3 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %13 = "neura.data_mov"(%12) {dfg_id = 15 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %14 = "neura.grant_once"(%13) {dfg_id = 20 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.constant"() <{value = 0.000000e+00 : f32}> {dfg_id = 4 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 3 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %13 = "neura.data_mov"(%12) {dfg_id = 15 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %14 = "neura.grant_once"(%13) {dfg_id = 20 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %15 = neura.reserve {dfg_id = 5 : i32} : !neura.data -// MAPPING-NEXT: %16 = "neura.data_mov"(%2) {dfg_id = 21 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %17 = neura.phi_start %16, %15 {dfg_id = 26 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %16 = "neura.data_mov"(%2) {dfg_id = 21 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %17 = neura.phi_start %16, %15 {dfg_id = 26 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %18 = neura.reserve {dfg_id = 6 : i32} : !neura.data -// MAPPING-NEXT: %19 = "neura.data_mov"(%8) {dfg_id = 23 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = neura.phi_start %19, %18 {dfg_id = 28 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %19 = "neura.data_mov"(%8) {dfg_id = 23 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = neura.phi_start %19, %18 {dfg_id = 28 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %21 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%11) {dfg_id = 24 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = neura.phi_start %22, %21 {dfg_id = 29 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%11) {dfg_id = 24 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = neura.phi_start %22, %21 {dfg_id = 29 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %24 = neura.reserve {dfg_id = 8 : i32} : !neura.data -// MAPPING-NEXT: %25 = "neura.data_mov"(%14) {dfg_id = 25 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = neura.phi_start %25, %24 {dfg_id = 30 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %25 = "neura.data_mov"(%14) {dfg_id = 25 : i32, mapping_locs = [{id = 45 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = neura.phi_start %25, %24 {dfg_id = 30 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %27 = neura.reserve {dfg_id = 9 : i32} : !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%5) {dfg_id = 22 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = neura.phi_start %28, %27 {dfg_id = 27 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %30 = "neura.data_mov"(%26) {dfg_id = 38 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%23) {dfg_id = 37 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.fadd"(%30, %31) {dfg_id = 40 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %33 = "neura.data_mov"(%29) {dfg_id = 33 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%20) {dfg_id = 35 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.add"(%33, %34) {dfg_id = 39 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 42 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%17) {dfg_id = 32 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %38 = "neura.icmp"(%36, %37) <{cmpType = "slt"}> {dfg_id = 45 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %39 = "neura.data_mov"(%35) {dfg_id = 41 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %40 = "neura.data_mov"(%38) {dfg_id = 51 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %41 = neura.grant_predicate %39, %40 {dfg_id = 57 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %41 -> %27 {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %42 = "neura.data_mov"(%32) {dfg_id = 44 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 24 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %43 = "neura.data_mov"(%38) {dfg_id = 50 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 4 : i32}, {id = 31 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %44 = neura.grant_predicate %42, %43 {dfg_id = 56 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %44 -> %24 {dfg_id = 62 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %45 = "neura.data_mov"(%23) {dfg_id = 36 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 4 : i32}, {id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %46 = "neura.data_mov"(%38) {dfg_id = 49 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 4 : i32}, {id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %47 = neura.grant_predicate %45, %46 {dfg_id = 55 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %47 -> %21 {dfg_id = 61 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %48 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %49 = "neura.data_mov"(%38) {dfg_id = 48 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %50 = neura.grant_predicate %48, %49 {dfg_id = 54 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %50 -> %18 {dfg_id = 60 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %51 = "neura.data_mov"(%17) {dfg_id = 31 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %52 = "neura.data_mov"(%38) {dfg_id = 47 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %53 = neura.grant_predicate %51, %52 {dfg_id = 53 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %53 -> %15 {dfg_id = 59 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %54 = "neura.data_mov"(%38) {dfg_id = 46 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %55 = "neura.not"(%54) {dfg_id = 52 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %56 = "neura.data_mov"(%32) {dfg_id = 43 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %57 = "neura.data_mov"(%55) {dfg_id = 58 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 17 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = neura.grant_predicate %56, %57 {dfg_id = 64 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %59 = "neura.data_mov"(%58) {dfg_id = 65 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_value %59 : !neura.data {dfg_id = 66 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} +// MAPPING-NEXT: %28 = "neura.data_mov"(%5) {dfg_id = 22 : i32, mapping_locs = [{id = 352 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = neura.phi_start %28, %27 {dfg_id = 27 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %30 = "neura.data_mov"(%26) {dfg_id = 38 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%23) {dfg_id = 37 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.fadd"(%30, %31) {dfg_id = 40 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %33 = "neura.data_mov"(%29) {dfg_id = 33 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%20) {dfg_id = 35 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.add"(%33, %34) {dfg_id = 39 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 42 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%17) {dfg_id = 32 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %38 = "neura.icmp"(%36, %37) <{cmpType = "slt"}> {dfg_id = 45 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %39 = "neura.data_mov"(%35) {dfg_id = 41 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %40 = "neura.data_mov"(%38) {dfg_id = 51 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %41 = neura.grant_predicate %39, %40 {dfg_id = 57 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %41 -> %27 {dfg_id = 63 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %42 = "neura.data_mov"(%32) {dfg_id = 44 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %43 = "neura.data_mov"(%38) {dfg_id = 50 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %44 = neura.grant_predicate %42, %43 {dfg_id = 56 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %44 -> %24 {dfg_id = 62 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %45 = "neura.data_mov"(%23) {dfg_id = 36 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %46 = "neura.data_mov"(%38) {dfg_id = 49 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 33 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %47 = neura.grant_predicate %45, %46 {dfg_id = 55 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %47 -> %21 {dfg_id = 61 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %48 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %49 = "neura.data_mov"(%38) {dfg_id = 48 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %50 = neura.grant_predicate %48, %49 {dfg_id = 54 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %50 -> %18 {dfg_id = 60 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %51 = "neura.data_mov"(%17) {dfg_id = 31 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %52 = "neura.data_mov"(%38) {dfg_id = 47 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %53 = neura.grant_predicate %51, %52 {dfg_id = 53 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %53 -> %15 {dfg_id = 59 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %54 = "neura.data_mov"(%38) {dfg_id = 46 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %55 = "neura.not"(%54) {dfg_id = 52 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %56 = "neura.data_mov"(%32) {dfg_id = 43 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %57 = "neura.data_mov"(%55) {dfg_id = 58 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 28 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = neura.grant_predicate %56, %57 {dfg_id = 64 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %59 = "neura.data_mov"(%58) {dfg_id = 65 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_value %59 : !neura.data {dfg_id = 66 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 9 : i32, x = 3 : i32, y = 1 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 10 : i32} // MAPPING-NEXT: } // MAPPING-NEXT: } @@ -107,31 +107,31 @@ func.func @loop_test() -> f32 { // YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 4 +// YAML-NEXT: compiled_ii: 5 // YAML-NEXT: cores: // YAML-NEXT: - column: 0 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "0" +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "4" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 0 +// YAML-NEXT: id: 3 +// YAML-NEXT: time_step: 2 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" +// YAML-NEXT: - operand: "#3.000000" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 17 -// YAML-NEXT: time_step: 1 +// YAML-NEXT: id: 19 +// YAML-NEXT: time_step: 3 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" @@ -139,93 +139,49 @@ func.func @loop_test() -> f32 { // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 36 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 55 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 410001 -// YAML-NEXT: time_step: 4 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 53 +// YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 27 -// YAML-NEXT: time_step: 2 +// YAML-NEXT: - opcode: "CONSTANT" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 1 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "#10" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 310000 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 57 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 16 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: @@ -234,120 +190,147 @@ func.func @loop_test() -> f32 { // YAML-NEXT: time_step: 3 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "3" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 61 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#10" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 16 -// YAML-NEXT: time_step: 2 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 29 +// YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 +// YAML-NEXT: - column: 2 // YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "4" +// YAML-NEXT: core_id: "6" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 4 +// YAML-NEXT: - opcode: "FADD" +// YAML-NEXT: id: 40 +// YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 36 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "FADD" -// YAML-NEXT: id: 40 -// YAML-NEXT: time_step: 5 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 49 +// YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 3 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 55 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#3.000000" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 490002 -// YAML-NEXT: time_step: 6 +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 64 +// YAML-NEXT: time_step: 8 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "7" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 19 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "RETURN_VALUE" +// YAML-NEXT: id: 66 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "8" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 52 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "9" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: @@ -376,14 +359,24 @@ func.func @loop_test() -> f32 { // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 490001 -// YAML-NEXT: time_step: 5 +// YAML-NEXT: id: 580001 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 60 +// YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: @@ -394,129 +387,120 @@ func.func @loop_test() -> f32 { // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ICMP_SLT" +// YAML-NEXT: id: 45 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 430001 -// YAML-NEXT: time_step: 6 +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: -// ASM: # Compiled II: 4 -// ASM: PE(0,0): -// ASM-NEXT: { -// ASM-NEXT: CONSTANT, [#0] -> [$0] (t=0, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=0) +// ASM: # Compiled II: 5 +// ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [EAST, RED] (t=1, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: CONSTANT, [#3.000000] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [NORTH, RED] (t=7, inv_iters=1) +// ASM-NEXT: GRANT_ONCE, [$0] -> [EAST, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=4, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [EAST, RED] -> [NORTH, RED] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(2,0): +// ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=4, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$8] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [NORTH, RED] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [EAST, RED], [NORTH, RED] -> [NORTH, RED], [$0] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(3,0): -// ASM-NEXT: { // ASM-NEXT: CONSTANT, [#10] -> [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [WEST, RED] (t=2, inv_iters=0) +// ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [SOUTH, RED] -> [$0], [SOUTH, RED] (t=4, inv_iters=1) +// ASM-NEXT: PHI_START, [$0], [$8] -> [NORTH, RED], [$0] (t=3, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=8, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [WEST, RED], [$8] -> [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(2,1): +// ASM-NEXT: { +// ASM-NEXT: FADD, [NORTH, RED], [WEST, RED] -> [NORTH, RED], [$0] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: FADD, [NORTH, RED], [$0] -> [NORTH, RED], [EAST, RED] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: CONSTANT, [#3.000000] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$1] -> [WEST, RED] (t=7, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [EAST, RED] (t=8, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(1,1): +// ASM: PE(3,1): +// ASM-NEXT: { +// ASM-NEXT: RETURN_VALUE, [WEST, RED] (t=9, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(0,2): +// ASM-NEXT: { +// ASM-NEXT: NOT, [EAST, RED] -> [EAST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM: PE(1,2): // ASM-NEXT: { // ASM-NEXT: CONSTANT, [#1] -> [$0] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=1, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=6, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$0], [EAST, RED] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: PHI_START, [$0], [$8] -> [EAST, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: ADD, [SOUTH, RED], [$0] -> [EAST, RED], [SOUTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(2,1): +// ASM-NEXT: ICMP_SLT, [EAST, RED], [SOUTH, RED] -> [EAST, RED], [SOUTH, RED], [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: ICMP_SLT, [WEST, RED], [SOUTH, RED] -> [SOUTH, RED], [NORTH, RED], [WEST, RED], [$1], [$8], [EAST, RED] (t=4, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$9] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [EAST, RED] (t=6, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=6, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$9] -> [$1] (t=7, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=7, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { +// ASM-NEXT: ADD, [EAST, RED], [WEST, RED] -> [WEST, RED], [$8] (t=3, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: NOT, [WEST, RED] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM: PE(0,2): -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [NORTH, RED], [EAST, RED] -> [SOUTH, RED] (t=4, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(1,2): +// ASM-NEXT: PHI_START, [NORTH, RED], [$1] -> [SOUTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(3,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [$0] (t=8, inv_iters=2) +// ASM-NEXT: CONSTANT, [#0] -> [$0] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: RETURN_VALUE, [$0] (t=9, inv_iters=2) +// ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=6, inv_iters=1) +// ASM-NEXT: PHI_START, [$0], [WEST, RED] -> [WEST, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$0] -> [WEST, RED] (t=7, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(2,2): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM: PE(0,3): +// ASM: PE(2,3): // ASM-NEXT: { // ASM-NEXT: CONSTANT, [#0.000000] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) diff --git a/test/code_gen/test_code_generate_king_mesh.mlir b/test/code_gen/test_code_generate_king_mesh.mlir index b832b9b1..5113a785 100644 --- a/test/code_gen/test_code_generate_king_mesh.mlir +++ b/test/code_gen/test_code_generate_king_mesh.mlir @@ -32,7 +32,7 @@ func.func @loop_test_king_mesh() -> f32 { return %result : f32 } -// MAPPING: func.func @loop_test_king_mesh() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPING: func.func @loop_test_king_mesh() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // MAPPING-NEXT: %0 = "neura.constant"() <{value = 10 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"(%1) {dfg_id = 16 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data @@ -76,20 +76,20 @@ func.func @loop_test_king_mesh() -> f32 { // MAPPING-NEXT: %40 = "neura.data_mov"(%38) {dfg_id = 51 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %41 = neura.grant_predicate %39, %40 {dfg_id = 57 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %41 -> %27 {dfg_id = 63 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %42 = "neura.data_mov"(%32) {dfg_id = 44 : i32, mapping_locs = [{id = 57 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %43 = "neura.data_mov"(%38) {dfg_id = 50 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 52 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 208 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 208 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %42 = "neura.data_mov"(%32) {dfg_id = 44 : i32, mapping_locs = [{id = 57 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %43 = "neura.data_mov"(%38) {dfg_id = 50 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %44 = neura.grant_predicate %42, %43 {dfg_id = 56 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %44 -> %24 {dfg_id = 62 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %45 = "neura.data_mov"(%23) {dfg_id = 36 : i32, mapping_locs = [{id = 57 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %46 = "neura.data_mov"(%38) {dfg_id = 49 : i32, mapping_locs = [{id = 23 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %46 = "neura.data_mov"(%38) {dfg_id = 49 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %47 = neura.grant_predicate %45, %46 {dfg_id = 55 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %47 -> %21 {dfg_id = 61 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}, {id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %48 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 52 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %49 = "neura.data_mov"(%38) {dfg_id = 48 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %50 = neura.grant_predicate %48, %49 {dfg_id = 54 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %50 -> %18 {dfg_id = 60 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %51 = "neura.data_mov"(%17) {dfg_id = 31 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %52 = "neura.data_mov"(%38) {dfg_id = 47 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %51 = "neura.data_mov"(%17) {dfg_id = 31 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %52 = "neura.data_mov"(%38) {dfg_id = 47 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %53 = neura.grant_predicate %51, %52 {dfg_id = 53 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %53 -> %15 {dfg_id = 59 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %54 = "neura.data_mov"(%38) {dfg_id = 46 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data @@ -108,24 +108,6 @@ func.func @loop_test_king_mesh() -> f32 { // YAML-NEXT: rows: 4 // YAML-NEXT: compiled_ii: 5 // YAML-NEXT: cores: -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 490001 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTHEAST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - column: 2 // YAML-NEXT: row: 0 // YAML-NEXT: core_id: "2" @@ -187,10 +169,10 @@ func.func @loop_test_king_mesh() -> f32 { // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" @@ -232,8 +214,6 @@ func.func @loop_test_king_mesh() -> f32 { // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "ICMP_SLT" @@ -248,13 +228,9 @@ func.func @loop_test_king_mesh() -> f32 { // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTHEAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" @@ -279,43 +255,33 @@ func.func @loop_test_king_mesh() -> f32 { // YAML-NEXT: - operand: "NORTHWEST" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 36 +// YAML-NEXT: id: 50 // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 44 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 50 -// YAML-NEXT: time_step: 6 +// YAML-NEXT: id: 36 +// YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTHWEST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$16" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 49 +// YAML-NEXT: id: 44 // YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTHWEST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$1" @@ -329,7 +295,7 @@ func.func @loop_test_king_mesh() -> f32 { // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" @@ -351,9 +317,9 @@ func.func @loop_test_king_mesh() -> f32 { // YAML-NEXT: time_step: 8 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$16" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$8" @@ -403,12 +369,42 @@ func.func @loop_test_king_mesh() -> f32 { // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "RETURN_VALUE" +// YAML-NEXT: id: 66 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "9" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CONSTANT" +// YAML-NEXT: id: 2 +// YAML-NEXT: time_step: 0 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 18 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 // ASM: # Compiled II: 5 -// ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTHEAST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) // ASM: PE(2,0): // ASM-NEXT: { // ASM-NEXT: CONSTANT, [#0.000000] -> [$0] (t=2, inv_iters=0) @@ -422,7 +418,7 @@ func.func @loop_test_king_mesh() -> f32 { // ASM-NEXT: } (idx_per_ii=0) // ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$8] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$8] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: CONSTANT, [#10] -> [$0] (t=1, inv_iters=0) @@ -431,27 +427,26 @@ func.func @loop_test_king_mesh() -> f32 { // ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [$0], [$8] (t=3, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: ICMP_SLT, [NORTH, RED], [$0] -> [NORTHEAST, RED], [NORTH, RED], [SOUTH, RED], [EAST, RED], [$0], [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: ICMP_SLT, [NORTH, RED], [$0] -> [NORTHEAST, RED], [EAST, RED], [$8], [WEST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(2,1): // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [NORTHWEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=5, inv_iters=1) // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=6, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTHWEST, RED] -> [$16] (t=6, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTHWEST, RED] -> [$1] (t=6, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED] (t=7, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED] (t=7, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTHWEST, RED] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$8] (t=8, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [$8] (t=8, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: PHI_START, [SOUTH, RED], [$8] -> [NORTH, RED] (t=4, inv_iters=0) @@ -469,7 +464,6 @@ func.func @loop_test_king_mesh() -> f32 { // ASM: PE(1,2): // ASM-NEXT: { // ASM-NEXT: CONSTANT, [#1] -> [$0] (t=0, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [SOUTHEAST, RED] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=1, inv_iters=0) diff --git a/test/compiler_e2e/fir/fir_kernel.mlir b/test/compiler_e2e/fir/fir_kernel.mlir index af09176c..f50be71d 100644 --- a/test/compiler_e2e/fir/fir_kernel.mlir +++ b/test/compiler_e2e/fir/fir_kernel.mlir @@ -8,7 +8,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data @@ -31,7 +31,7 @@ // MAPPING-NEXT: %19 = "neura.icmp"(%18) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 23 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %21 = "neura.not"(%20) {dfg_id = 26 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%17) {dfg_id = 16 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%17) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %23 = "neura.data_mov"(%21) {dfg_id = 29 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %24 = neura.grant_predicate %22, %23 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %24 -> %5 {dfg_id = 35 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data @@ -46,6 +46,7 @@ // MAPPING-NEXT: neura.return_value %31 : !neura.data {dfg_id = 33 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 2 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} // MAPPING-NEXT: } +// MAPPING-NEXT: } // ASM: # Compiled II: 5 @@ -96,13 +97,13 @@ // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [WEST, RED], [SOUTH, RED], [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$1] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED] (t=3, inv_iters=0) @@ -353,7 +354,7 @@ // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" @@ -392,7 +393,7 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: @@ -416,31 +417,5 @@ // YAML-NEXT: id: 26 // YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "11" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" diff --git a/test/compiler_e2e/visualize/test.mlir b/test/compiler_e2e/visualize/test.mlir index 50b1c32a..bb0b8cf4 100644 --- a/test/compiler_e2e/visualize/test.mlir +++ b/test/compiler_e2e/visualize/test.mlir @@ -14,7 +14,7 @@ func.func @test_print_op_graph(%a: f32, %b: f32) -> f32 { } // MAPPING: module -// MAPPING: func.func @test_print_op_graph(%arg0: f32, %arg1: f32) -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 1 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 1 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} +// MAPPING: func.func @test_print_op_graph(%arg0: f32, %arg1: f32) -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 1 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} // MAPPING: %0 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING: %1 = "neura.data_mov"(%0) {dfg_id = 2 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING: %2 = "neura.fadd"(%1) {dfg_id = 3 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = "%arg1"} : (!neura.data) -> !neura.data diff --git a/test/controflow_fuse/perfect_nested/perfect_nested.mlir b/test/controflow_fuse/perfect_nested/perfect_nested.mlir index bbc5877e..8aa15477 100644 --- a/test/controflow_fuse/perfect_nested/perfect_nested.mlir +++ b/test/controflow_fuse/perfect_nested/perfect_nested.mlir @@ -200,4 +200,4 @@ module attributes {} { // CTRL2DATA-NEXT: neura.yield // CTRL2DATA-NEXT: } -// MAPPING: func.func @_Z10bert_node1PA1_A1_A1_A1_A128_bPA1_A128_S1_(%arg0: memref, %arg1: memref) attributes {accelerator = "neura", dataflow_mode = "predicate", llvm.linkage = #llvm.linkage, mapping_info = {compiled_ii = 8 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 8 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} +// MAPPING: func.func @_Z10bert_node1PA1_A1_A1_A1_A128_bPA1_A128_S1_(%arg0: memref, %arg1: memref) attributes {accelerator = "neura", dataflow_mode = "predicate", llvm.linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 8 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} diff --git a/test/controflow_fuse/simple_loop/simple_loop.mlir b/test/controflow_fuse/simple_loop/simple_loop.mlir index e9c04f7c..b5dd9bb0 100644 --- a/test/controflow_fuse/simple_loop/simple_loop.mlir +++ b/test/controflow_fuse/simple_loop/simple_loop.mlir @@ -209,4 +209,4 @@ module attributes {} { // FUSE-MAPPING: func.func @_Z11simple_loopPiS_ // FUSE-MAPPING-SAME: accelerator = "neura" // FUSE-MAPPING-SAME: dataflow_mode = "predicate" -// FUSE-MAPPING-SAME: mapping_info = {compiled_ii = 2 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 1 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} \ No newline at end of file +// FUSE-MAPPING-SAME: mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 1 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} \ No newline at end of file diff --git a/test/controflow_fuse/simple_loop_reduction/simple_loop_reduction.mlir b/test/controflow_fuse/simple_loop_reduction/simple_loop_reduction.mlir index ace0dd26..71726d54 100644 --- a/test/controflow_fuse/simple_loop_reduction/simple_loop_reduction.mlir +++ b/test/controflow_fuse/simple_loop_reduction/simple_loop_reduction.mlir @@ -178,4 +178,4 @@ module attributes {} { // FUSE-NEXT: } -// FUSE-MAPPING: func.func @_Z10simpleloopv() -> i32 attributes {accelerator = "neura", dataflow_mode = "predicate", llvm.linkage = #llvm.linkage, mapping_info = {compiled_ii = 3 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 3 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} +// FUSE-MAPPING: func.func @_Z10simpleloopv() -> i32 attributes {accelerator = "neura", dataflow_mode = "predicate", llvm.linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 3 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} diff --git a/test/e2e/axpy/axpy_kernel.mlir b/test/e2e/axpy/axpy_kernel.mlir index a4234117..44854e7d 100644 --- a/test/e2e/axpy/axpy_kernel.mlir +++ b/test/e2e/axpy/axpy_kernel.mlir @@ -22,7 +22,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // -// MAPPING: func.func @kernel_axpy_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel_axpy_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = neura.reserve {dfg_id = 1 : i32} : !neura.data // MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data @@ -41,7 +41,7 @@ // MAPPING-NEXT: %15 = "neura.data_mov"(%13) {dfg_id = 22 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 25 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %16 = "neura.add"(%14, %15) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %17 = "neura.data_mov"(%16) {dfg_id = 34 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.data_mov"(%11) {dfg_id = 13 : i32, mapping_locs = [{id = 45 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.data_mov"(%11) {dfg_id = 13 : i32, mapping_locs = [{id = 43 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 40 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 12000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 39 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 25 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}, {id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: "neura.store"(%17, %18) {dfg_id = 35 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %19 = "neura.data_mov"(%3) {dfg_id = 5 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %20 = "neura.add"(%19) {dfg_id = 8 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data @@ -54,7 +54,7 @@ // MAPPING-NEXT: %27 = neura.grant_predicate %25, %26 {dfg_id = 31 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %27 -> %1 {dfg_id = 33 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %28 = "neura.data_mov"(%22) {dfg_id = 19 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%22) {dfg_id = 20 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%22) {dfg_id = 20 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 24 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %31 = "neura.data_mov"(%30) {dfg_id = 27 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: neura.return_void %31 : !neura.data {dfg_id = 30 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} @@ -187,50 +187,14 @@ // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 130004 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" // YAML-NEXT: id: 130003 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 130002 -// YAML-NEXT: time_step: 5 +// YAML-NEXT: time_step: 8 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - column: 3 // YAML-NEXT: row: 1 @@ -268,6 +232,18 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 130002 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" // YAML-NEXT: - column: 1 // YAML-NEXT: row: 2 // YAML-NEXT: core_id: "9" @@ -283,7 +259,7 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" @@ -362,6 +338,30 @@ // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ICMP_EQ" +// YAML-NEXT: id: 16 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#16" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 25 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: // // ASM: # Compiled II: 5 // ASM: PE(0,0): @@ -391,16 +391,8 @@ // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=7, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=8, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=8, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(1,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM: PE(2,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) // ASM: PE(3,1): // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=3, inv_iters=0) @@ -409,9 +401,12 @@ // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=7, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) // ASM: PE(1,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: RETURN_VOID, [$0] (t=6, inv_iters=1) @@ -430,12 +425,10 @@ // ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#16] -> [$0], [WEST, RED], [$9] (t=3, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#16] -> [$0], [WEST, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: NOT, [$0] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$9] -> [WEST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(3,2): // ASM-NEXT: { @@ -448,6 +441,9 @@ // ASM-NEXT: { // ASM-NEXT: LOAD, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) // ASM: PE(1,3): // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=4, inv_iters=0) @@ -457,7 +453,7 @@ // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [WEST, RED], [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: GEP, [arg1], [$0] -> [WEST, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) diff --git a/test/e2e/bicg/bicg_int_kernel.mlir b/test/e2e/bicg/bicg_int_kernel.mlir index 3c8db684..fa91eb4e 100644 --- a/test/e2e/bicg/bicg_int_kernel.mlir +++ b/test/e2e/bicg/bicg_int_kernel.mlir @@ -27,25 +27,25 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @kernel_bicg_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 10 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.constant"() <{value = "%arg3"}> {dfg_id = 0 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 1 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.constant"() <{value = 0 : i8}> {dfg_id = 1 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %2 = "neura.constant"() <{value = 32 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 3 : i32}]} : () -> !neura.data +// MAPPING: func.func @kernel_bicg_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.constant"() <{value = "%arg3"}> {dfg_id = 0 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.constant"() <{value = 0 : i8}> {dfg_id = 1 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %2 = "neura.constant"() <{value = 32 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %3 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 3 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %4 = "neura.data_mov"(%0) {dfg_id = 13 : i32, mapping_locs = [{id = 23 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %5 = "neura.data_mov"(%1) {dfg_id = 14 : i32, mapping_locs = [{id = 352 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %6 = "neura.data_mov"(%2) {dfg_id = 15 : i32, mapping_locs = [{id = 47 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.memset"(%4, %5, %6) <{is_volatile = false}> {dfg_id = 18 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () +// MAPPING-NEXT: %4 = "neura.data_mov"(%0) {dfg_id = 13 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %5 = "neura.data_mov"(%1) {dfg_id = 14 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %6 = "neura.data_mov"(%2) {dfg_id = 15 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.memset"(%4, %5, %6) <{is_volatile = false}> {dfg_id = 18 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () // MAPPING-NEXT: %7 = neura.reserve {dfg_id = 4 : i32} : !neura.data // MAPPING-NEXT: %8 = "neura.data_mov"(%3) {dfg_id = 16 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %9 = neura.phi_start %8, %7 {dfg_id = 19 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %10 = neura.reserve {dfg_id = 5 : i32} : !neura.data // MAPPING-NEXT: %11 = "neura.data_mov"(%3) {dfg_id = 17 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %12 = neura.phi_start %11, %10 {dfg_id = 20 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %13 = "neura.data_mov"(%12) {dfg_id = 26 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 8001 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 8001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = "neura.data_mov"(%12) {dfg_id = 26 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 8000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %14 = "neura.gep"(%13) <{operandSegmentSizes = array}> {dfg_id = 32 : i32, lhs_value = "%arg4", mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.data_mov"(%14) {dfg_id = 44 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 12000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 12000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 12000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%15) {dfg_id = 51 : i32, lhs_value = 0 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> () +// MAPPING-NEXT: %15 = "neura.data_mov"(%14) {dfg_id = 44 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 8009 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}, {id = 8009 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 8009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%15) {dfg_id = 51 : i32, lhs_value = 0 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> () // MAPPING-NEXT: %16 = "neura.data_mov"(%12) {dfg_id = 25 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 8000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %17 = "neura.gep"(%16) <{operandSegmentSizes = array}> {dfg_id = 31 : i32, lhs_value = "%arg2", mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %18 = "neura.data_mov"(%12) {dfg_id = 24 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data @@ -53,14 +53,14 @@ // MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 41 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %21 = "neura.gep"(%20) <{operandSegmentSizes = array}> {dfg_id = 48 : i32, lhs_value = "%arg0", mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %22 = neura.reserve {dfg_id = 6 : i32} : !neura.data -// MAPPING-NEXT: %23 = "neura.data_mov"(%9) {dfg_id = 22 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 1 : i32}, {id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.data_mov"(%9) {dfg_id = 22 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 1 : i32}, {id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %24 = neura.phi_start %23, %22 {dfg_id = 28 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %25 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%12) {dfg_id = 23 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 1 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%12) {dfg_id = 23 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 1 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = neura.phi_start %26, %25 {dfg_id = 29 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %28 = neura.reserve {dfg_id = 8 : i32} : !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%14) {dfg_id = 43 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = neura.phi_start %29, %28 {dfg_id = 50 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%14) {dfg_id = 43 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.phi_start %29, %28 {dfg_id = 50 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %31 = neura.reserve {dfg_id = 9 : i32} : !neura.data // MAPPING-NEXT: %32 = "neura.data_mov"(%17) {dfg_id = 42 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %33 = neura.phi_start %32, %31 {dfg_id = 49 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data @@ -70,17 +70,17 @@ // MAPPING-NEXT: %37 = neura.reserve {dfg_id = 11 : i32} : !neura.data // MAPPING-NEXT: %38 = "neura.data_mov"(%9) {dfg_id = 21 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %39 = neura.phi_start %38, %37 {dfg_id = 27 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %40 = "neura.data_mov"(%36) {dfg_id = 75 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 25 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %41 = "neura.data_mov"(%39) {dfg_id = 36 : i32, mapping_locs = [{id = 4009 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 2 : i32}, {id = 4009 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 3 : i32}, {id = 4009 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 4 : i32}, {id = 4009 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %42 = "neura.gep"(%40, %41) <{operandSegmentSizes = array}> {dfg_id = 81 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %43 = "neura.data_mov"(%42) {dfg_id = 90 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %44 = "neura.load"(%43) {dfg_id = 98 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %45 = "neura.data_mov"(%33) {dfg_id = 59 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %46 = "neura.load"(%45) {dfg_id = 67 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %47 = "neura.data_mov"(%46) {dfg_id = 76 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %48 = "neura.data_mov"(%44) {dfg_id = 108 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %40 = "neura.data_mov"(%36) {dfg_id = 75 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %41 = "neura.data_mov"(%39) {dfg_id = 36 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 8008 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 8008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %42 = "neura.gep"(%40, %41) <{operandSegmentSizes = array}> {dfg_id = 81 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %43 = "neura.data_mov"(%42) {dfg_id = 90 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %44 = "neura.load"(%43) {dfg_id = 98 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %45 = "neura.data_mov"(%33) {dfg_id = 59 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 25 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %46 = "neura.load"(%45) {dfg_id = 67 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %47 = "neura.data_mov"(%46) {dfg_id = 76 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %48 = "neura.data_mov"(%44) {dfg_id = 108 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %49 = "neura.mul"(%47, %48) {dfg_id = 111 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %50 = "neura.data_mov"(%39) {dfg_id = 35 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %50 = "neura.data_mov"(%39) {dfg_id = 35 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %51 = "neura.gep"(%50) <{operandSegmentSizes = array}> {dfg_id = 47 : i32, lhs_value = "%arg3", mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %52 = "neura.data_mov"(%51) {dfg_id = 56 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %53 = "neura.load"(%52) {dfg_id = 65 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data @@ -88,53 +88,53 @@ // MAPPING-NEXT: %55 = "neura.data_mov"(%49) {dfg_id = 116 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %56 = "neura.add"(%54, %55) {dfg_id = 120 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %57 = "neura.data_mov"(%56) {dfg_id = 125 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%51) {dfg_id = 55 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%51) {dfg_id = 55 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 1001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 1001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: "neura.store"(%57, %58) {dfg_id = 130 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %59 = "neura.data_mov"(%39) {dfg_id = 34 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %60 = "neura.gep"(%59) <{operandSegmentSizes = array}> {dfg_id = 46 : i32, lhs_value = "%arg1", mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %61 = "neura.data_mov"(%60) {dfg_id = 54 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %62 = "neura.load"(%61) {dfg_id = 64 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %63 = "neura.data_mov"(%62) {dfg_id = 72 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %64 = "neura.data_mov"(%44) {dfg_id = 107 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %65 = "neura.mul"(%63, %64) {dfg_id = 110 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%30) {dfg_id = 62 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.load"(%66) {dfg_id = 68 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %68 = "neura.data_mov"(%67) {dfg_id = 77 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %69 = "neura.data_mov"(%65) {dfg_id = 115 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.add"(%68, %69) {dfg_id = 119 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %71 = "neura.data_mov"(%70) {dfg_id = 124 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%71, %72) {dfg_id = 129 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %63 = "neura.data_mov"(%62) {dfg_id = 72 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %64 = "neura.data_mov"(%44) {dfg_id = 107 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %65 = "neura.mul"(%63, %64) {dfg_id = 110 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%30) {dfg_id = 62 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 26 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.load"(%66) {dfg_id = 68 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %68 = "neura.data_mov"(%67) {dfg_id = 77 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %69 = "neura.data_mov"(%65) {dfg_id = 115 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.add"(%68, %69) {dfg_id = 119 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %71 = "neura.data_mov"(%70) {dfg_id = 124 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 26 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 12000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%71, %72) {dfg_id = 129 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %73 = "neura.data_mov"(%39) {dfg_id = 33 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %74 = "neura.add"(%73) {dfg_id = 45 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %75 = "neura.data_mov"(%74) {dfg_id = 53 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %76 = "neura.icmp"(%75) <{cmpType = "eq"}> {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 8 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %77 = "neura.data_mov"(%76) {dfg_id = 71 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %78 = "neura.not"(%77) {dfg_id = 80 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %79 = "neura.data_mov"(%74) {dfg_id = 52 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 160 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = "neura.data_mov"(%78) {dfg_id = 89 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %81 = neura.grant_predicate %79, %80 {dfg_id = 97 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %81 -> %37 {dfg_id = 106 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 4016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 4016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 4016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %82 = "neura.data_mov"(%36) {dfg_id = 74 : i32, mapping_locs = [{id = 312 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 4 : i32}, {id = 312 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 312 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 6 : i32}, {id = 312 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 7 : i32}, {id = 312 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 312 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 312 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = "neura.data_mov"(%78) {dfg_id = 88 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 298 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 8 : i32}, {id = 298 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 9 : i32}, {id = 298 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %79 = "neura.data_mov"(%74) {dfg_id = 52 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = "neura.data_mov"(%78) {dfg_id = 89 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %81 = neura.grant_predicate %79, %80 {dfg_id = 97 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %81 -> %37 {dfg_id = 106 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %82 = "neura.data_mov"(%36) {dfg_id = 74 : i32, mapping_locs = [{id = 290 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 290 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 290 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 290 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 290 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = "neura.data_mov"(%78) {dfg_id = 88 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %84 = neura.grant_predicate %82, %83 {dfg_id = 96 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %84 -> %34 {dfg_id = 105 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %85 = "neura.data_mov"(%33) {dfg_id = 58 : i32, mapping_locs = [{id = 304 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 304 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 304 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 304 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%78) {dfg_id = 87 : i32, mapping_locs = [{id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 297 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 297 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 297 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %84 -> %34 {dfg_id = 105 : i32, mapping_locs = [{id = 290 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 290 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 290 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %85 = "neura.data_mov"(%33) {dfg_id = 58 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 289 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 289 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 289 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 289 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%78) {dfg_id = 87 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %87 = neura.grant_predicate %85, %86 {dfg_id = 95 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %87 -> %31 {dfg_id = 104 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %88 = "neura.data_mov"(%30) {dfg_id = 60 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %87 -> %31 {dfg_id = 104 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %88 = "neura.data_mov"(%30) {dfg_id = 60 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %89 = "neura.data_mov"(%78) {dfg_id = 86 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %90 = neura.grant_predicate %88, %89 {dfg_id = 94 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %90 -> %28 {dfg_id = 103 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 8008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 8008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %91 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %92 = "neura.data_mov"(%78) {dfg_id = 85 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 176 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %93 = neura.grant_predicate %91, %92 {dfg_id = 93 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %93 -> %25 {dfg_id = 102 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4024 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 4024 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 4024 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 4024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %94 = "neura.data_mov"(%24) {dfg_id = 38 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %95 = "neura.data_mov"(%78) {dfg_id = 84 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 11 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %96 = neura.grant_predicate %94, %95 {dfg_id = 92 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %96 -> %22 {dfg_id = 101 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %90 -> %28 {dfg_id = 103 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %91 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %92 = "neura.data_mov"(%78) {dfg_id = 85 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %93 = neura.grant_predicate %91, %92 {dfg_id = 93 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %93 -> %25 {dfg_id = 102 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %94 = "neura.data_mov"(%24) {dfg_id = 38 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 1000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %95 = "neura.data_mov"(%78) {dfg_id = 84 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 1008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %96 = neura.grant_predicate %94, %95 {dfg_id = 92 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %96 -> %22 {dfg_id = 101 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %97 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %98 = "neura.data_mov"(%76) {dfg_id = 70 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %99 = neura.grant_predicate %97, %98 {dfg_id = 79 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data @@ -143,22 +143,22 @@ // MAPPING-NEXT: %102 = neura.grant_predicate %100, %101 {dfg_id = 78 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %103 = "neura.data_mov"(%99) {dfg_id = 83 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %104 = "neura.add"(%103) {dfg_id = 91 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %105 = "neura.data_mov"(%104) {dfg_id = 100 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %106 = "neura.icmp"(%105) <{cmpType = "eq"}> {dfg_id = 109 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 8 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %107 = "neura.data_mov"(%106) {dfg_id = 114 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %108 = "neura.not"(%107) {dfg_id = 118 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %109 = "neura.data_mov"(%104) {dfg_id = 99 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}, {id = 169 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 169 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %110 = "neura.data_mov"(%108) {dfg_id = 123 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %111 = neura.grant_predicate %109, %110 {dfg_id = 128 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %111 -> %10 {dfg_id = 132 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 10 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %112 = "neura.data_mov"(%102) {dfg_id = 82 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %113 = "neura.data_mov"(%108) {dfg_id = 122 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %114 = neura.grant_predicate %112, %113 {dfg_id = 127 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %114 -> %7 {dfg_id = 131 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 10 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%106) {dfg_id = 112 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = "neura.data_mov"(%106) {dfg_id = 113 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %117 = neura.grant_predicate %115, %116 {dfg_id = 117 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %118 = "neura.data_mov"(%117) {dfg_id = 121 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %105 = "neura.data_mov"(%104) {dfg_id = 100 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %106 = "neura.icmp"(%105) <{cmpType = "eq"}> {dfg_id = 109 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 8 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %107 = "neura.data_mov"(%106) {dfg_id = 114 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %108 = "neura.not"(%107) {dfg_id = 118 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %109 = "neura.data_mov"(%104) {dfg_id = 99 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 27 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %110 = "neura.data_mov"(%108) {dfg_id = 123 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %111 = neura.grant_predicate %109, %110 {dfg_id = 128 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %111 -> %10 {dfg_id = 132 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 10 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %112 = "neura.data_mov"(%102) {dfg_id = 82 : i32, mapping_locs = [{id = 1009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 1009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %113 = "neura.data_mov"(%108) {dfg_id = 122 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %114 = neura.grant_predicate %112, %113 {dfg_id = 127 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %114 -> %7 {dfg_id = 131 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 10 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%106) {dfg_id = 112 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = "neura.data_mov"(%106) {dfg_id = 113 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %117 = neura.grant_predicate %115, %116 {dfg_id = 117 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %118 = "neura.data_mov"(%117) {dfg_id = 121 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: neura.return_void %118 : !neura.data {dfg_id = 126 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 12 : i32} // MAPPING-NEXT: } @@ -190,6 +190,16 @@ // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 101 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "PHI_START" @@ -202,14 +212,14 @@ // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 34 +// YAML-NEXT: id: 35 // YAML-NEXT: time_step: 3 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: @@ -218,18 +228,6 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GEP" @@ -244,16 +242,6 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 400001 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 6 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GEP" @@ -263,13 +251,11 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "arg3" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 7 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "PHI_START" @@ -277,35 +263,13 @@ // YAML-NEXT: time_step: 7 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$16" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 720001 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 84 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 8 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" @@ -318,20 +282,6 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 92 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$16" -// YAML-NEXT: color: "RED" // YAML-NEXT: - column: 1 // YAML-NEXT: row: 0 // YAML-NEXT: core_id: "1" @@ -340,12 +290,14 @@ // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 1310001 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 127 // YAML-NEXT: time_step: 10 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$9" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "WEST" @@ -359,7 +311,7 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: @@ -383,7 +335,17 @@ // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 84 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 7 // YAML-NEXT: operations: @@ -397,6 +359,16 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 55 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 8 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GRANT_PREDICATE" @@ -409,12 +381,34 @@ // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$9" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 38 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 9 // YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 92 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 55 +// YAML-NEXT: id: 122 // YAML-NEXT: time_step: 9 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: @@ -423,25 +417,23 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 +// YAML-NEXT: - column: 3 // YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" +// YAML-NEXT: core_id: "3" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: - index_per_ii: 8 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 127 -// YAML-NEXT: time_step: 9 +// YAML-NEXT: - opcode: "CONSTANT" +// YAML-NEXT: id: 1 +// YAML-NEXT: time_step: 8 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "#0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - column: 0 // YAML-NEXT: row: 1 @@ -449,123 +441,116 @@ // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 20 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "CTRL_MOV" // YAML-NEXT: id: 102 -// YAML-NEXT: time_step: 10 +// YAML-NEXT: time_step: 11 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$24" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 20 // ASM: # Compiled II: 10 // ASM: PE(0,0): // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [$0], [NORTH, RED] (t=0, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$8], [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$1], [NORTH, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { // ASM-NEXT: GEP, [arg1], [$0] -> [EAST, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [$1] -> [EAST, RED], [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: GEP, [arg3], [$0] -> [EAST, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$8], [$16] -> [$0], [EAST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=7, inv_iters=0) +// ASM-NEXT: PHI_START, [$1], [$8] -> [EAST, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$16] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) // ASM: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [WEST, RED] (t=10, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$9], [$0] -> [WEST, RED] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: STORE, [NORTH, RED], [$0] (t=11, inv_iters=1) +// ASM-NEXT: STORE, [NORTH, RED], [$1] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: LOAD, [WEST, RED] -> [WEST, RED] (t=6, inv_iters=0) +// ASM-NEXT: LOAD, [WEST, RED] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { // ASM-NEXT: LOAD, [WEST, RED] -> [WEST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$0] -> [EAST, RED] (t=8, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$0] -> [$9] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(2,0): +// ASM: PE(3,0): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [NORTH, RED] -> [WEST, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: CONSTANT, [#0] -> [NORTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) // ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$24] (t=10, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [EAST, RED] -> [$0], [NORTH, RED], [EAST, RED], [$8] (t=1, inv_iters=0) +// ASM-NEXT: PHI_START, [SOUTH, RED], [NORTH, RED] -> [NORTH, RED], [EAST, RED], [$1] (t=1, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$16] -> [$9], [$16], [SOUTH, RED], [$0] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [NORTH, RED], [SOUTH, RED], [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED], [$0] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$16] -> [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED], [$2] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$8], [$24] -> [SOUTH, RED], [$0] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: PHI_START, [$1], [$8] -> [EAST, RED], [$0] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [EAST, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GEP, [NORTH, RED], [$9] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$2], [EAST, RED] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [NORTH, RED], [$0] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: MUL, [SOUTH, RED], [$0] -> [NORTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { // ASM-NEXT: ADD, [SOUTH, RED], [NORTH, RED] -> [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$9], [$0] -> [WEST, RED] (t=10, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [WEST, RED] (t=10, inv_iters=1) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { @@ -578,121 +563,103 @@ // ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [WEST, RED], [SOUTH, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$8], [EAST, RED], [$24], [NORTH, RED], [$16], [WEST, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) +// ASM-NEXT: NOT, [$0] -> [WEST, RED], [NORTH, RED], [$8], [SOUTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: ADD, [WEST, RED], [#1] -> [EAST, RED], [$9] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$24] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: ADD, [WEST, RED], [#1] -> [$0], [NORTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#8] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: NOT, [$0] -> [WEST, RED], [SOUTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [WEST, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [EAST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [$0] (t=10, inv_iters=1) +// ASM-NEXT: RETURN_VOID, [WEST, RED] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [$8], [$16] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [WEST, RED], [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: CONSTANT, [arg3] -> [EAST, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) // ASM: PE(3,1): // ASM-NEXT: { -// ASM-NEXT: CONSTANT, [arg3] -> [NORTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: CONSTANT, [#32] -> [$0] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: MEMSET, [WEST, RED], [SOUTH, RED], [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) // ASM: PE(0,2): // ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$8] (t=10, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=10, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [SOUTH, RED] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: GEP, [arg2], [$0] -> [EAST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg4], [$1] -> [NORTH, RED], [$0] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: GEP, [arg4], [$0] -> [$9], [EAST, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [NORTH, RED], [$8], [EAST, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: GEP, [$0], [$8] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: LOAD, [$0] -> [$0], [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [SOUTH, RED] -> [SOUTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: MUL, [SOUTH, RED], [$0] -> [SOUTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [SOUTH, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: STORE, [#0], [$9] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(1,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$16], [$9] -> [$0] (t=10, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [$1] (t=10, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$24], [$10] -> [$1] (t=11, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$2], [$8] -> [$2] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [WEST, RED], [$24] (t=4, inv_iters=0) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$2] -> [WEST, RED], [$2] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [WEST, RED], [$16] (t=5, inv_iters=0) +// ASM-NEXT: PHI_START, [WEST, RED], [$1] -> [WEST, RED], [$1] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { +// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [WEST, RED], [$0] (t=6, inv_iters=0) // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$9] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$10] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(3,2): -// ASM-NEXT: { -// ASM-NEXT: CONSTANT, [#0] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: MUL, [SOUTH, RED], [WEST, RED] -> [NORTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: MEMSET, [SOUTH, RED], [$0], [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(0,3): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: STORE, [EAST, RED], [$0] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: LOAD, [SOUTH, RED] -> [SOUTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: LOAD, [SOUTH, RED] -> [EAST, RED] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM: PE(1,3): // ASM-NEXT: { -// ASM-NEXT: STORE, [#0], [$0] (t=9, inv_iters=0) +// ASM-NEXT: ADD, [WEST, RED], [SOUTH, RED] -> [WEST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(3,3): -// ASM-NEXT: { -// ASM-NEXT: CONSTANT, [#32] -> [SOUTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) diff --git a/test/e2e/bicg/bicg_kernel.mlir b/test/e2e/bicg/bicg_kernel.mlir index bc6b818c..f3ec6d5a 100644 --- a/test/e2e/bicg/bicg_kernel.mlir +++ b/test/e2e/bicg/bicg_kernel.mlir @@ -46,8 +46,8 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// BEFORE_CANONICALIZE: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, f80 = dense<128> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, i64 = dense<64> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { -// BEFORE_CANONICALIZE-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// BEFORE_CANONICALIZE: module attributes {dlti.dl_spec = {{.*}}} { +// BEFORE_CANONICALIZE-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // BEFORE_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 // BEFORE_CANONICALIZE-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 // BEFORE_CANONICALIZE-NEXT: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr @@ -105,8 +105,8 @@ // BEFORE_CANONICALIZE-NEXT: } // BEFORE_CANONICALIZE-NEXT: } -// AFTER_CANONICALIZE: module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f64 = dense<64> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, "dlti.endianness" = "little", "dlti.stack_alignment" = 128 : i64>, llvm.ident = "clang version 20.1.7 (https://github.com/llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)"} { -// AFTER_CANONICALIZE-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// AFTER_CANONICALIZE: module attributes {dlti.dl_spec = {{.*}}} { +// AFTER_CANONICALIZE-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // AFTER_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 // AFTER_CANONICALIZE-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 // AFTER_CANONICALIZE-NEXT: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr @@ -165,13 +165,13 @@ // AFTER_CANONICALIZE-NEXT: } -// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 12 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = "%arg1"}> {dfg_id = 2 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %3 = "neura.grant_once"() <{constant_value = "%arg3"}> {dfg_id = 3 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %4 = "neura.grant_once"() <{constant_value = "%arg4"}> {dfg_id = 4 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 3 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %5 = "neura.grant_once"() <{constant_value = 0 : i8}> {dfg_id = 5 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %3 = "neura.grant_once"() <{constant_value = "%arg3"}> {dfg_id = 3 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 3 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %4 = "neura.grant_once"() <{constant_value = "%arg4"}> {dfg_id = 4 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %5 = "neura.grant_once"() <{constant_value = 0 : i8}> {dfg_id = 5 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 3 : i32}]} : () -> !neura.data // MAPPING-NEXT: %6 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 6 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %7 = "neura.data_mov"(%1) {dfg_id = 20 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %8 = "neura.icmp"(%7) <{cmpType = "sgt"}> {dfg_id = 28 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data @@ -180,69 +180,69 @@ // MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 19 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 36 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 42 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%3) {dfg_id = 23 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 35 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 176 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 176 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 176 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 176 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 176 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 41 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%5) {dfg_id = 25 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.data_mov"(%10) {dfg_id = 34 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 24 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 304 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 304 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 304 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 304 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 304 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 304 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 304 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %19 = neura.grant_predicate %17, %18 {dfg_id = 40 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%3) {dfg_id = 23 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 35 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 290 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 290 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 290 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 290 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 290 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 290 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 290 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 41 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%5) {dfg_id = 25 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 12000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 12000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.data_mov"(%10) {dfg_id = 34 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 26 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 12009 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 12009 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}, {id = 12009 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 12009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 12009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 12009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 12009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 12009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 12009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 12009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = neura.grant_predicate %17, %18 {dfg_id = 40 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %20 = "neura.data_mov"(%2) {dfg_id = 21 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %21 = "neura.data_mov"(%10) {dfg_id = 33 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %22 = neura.grant_predicate %20, %21 {dfg_id = 39 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %23 = "neura.data_mov"(%6) {dfg_id = 27 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 29 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%10) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%10) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %25 = neura.grant_predicate %23, %24 {dfg_id = 38 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%10) {dfg_id = 31 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%10) {dfg_id = 31 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 37 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%2) {dfg_id = 22 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 1008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 45 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 55 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 24 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 44 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 26 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 54 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%5) {dfg_id = 26 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.data_mov"(%27) {dfg_id = 43 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 53 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %38 = "neura.icmp"(%37) <{cmpType = "sgt"}> {dfg_id = 67 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %39 = "neura.data_mov"(%38) {dfg_id = 76 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %40 = "neura.not"(%39) {dfg_id = 87 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %41 = "neura.data_mov"(%40) {dfg_id = 97 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %42 = "neura.data_mov"(%40) {dfg_id = 98 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %43 = neura.grant_predicate %41, %42 {dfg_id = 108 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %44 = "neura.data_mov"(%30) {dfg_id = 60 : i32, mapping_locs = [{id = 1008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %45 = "neura.data_mov"(%38) {dfg_id = 75 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %46 = neura.grant_predicate %44, %45 {dfg_id = 86 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %47 = "neura.data_mov"(%33) {dfg_id = 59 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 12000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %48 = "neura.data_mov"(%38) {dfg_id = 74 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 26 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %49 = neura.grant_predicate %47, %48 {dfg_id = 85 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %50 = "neura.data_mov"(%36) {dfg_id = 58 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %51 = "neura.data_mov"(%38) {dfg_id = 73 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %52 = neura.grant_predicate %50, %51 {dfg_id = 84 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %53 = "neura.data_mov"(%46) {dfg_id = 96 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %54 = neura.zext %53 {dfg_id = 107 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %55 = "neura.data_mov"(%54) {dfg_id = 116 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %56 = "neura.shl"(%55) {dfg_id = 132 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %57 = "neura.data_mov"(%49) {dfg_id = 95 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 42 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%52) {dfg_id = 94 : i32, mapping_locs = [{id = 304 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 304 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 304 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %59 = "neura.data_mov"(%56) {dfg_id = 143 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 305 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.memset"(%57, %58, %59) <{is_volatile = false}> {dfg_id = 162 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () -// MAPPING-NEXT: %60 = "neura.data_mov"(%56) {dfg_id = 142 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %60 : !neura.data {dfg_id = 161 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 0 : i32}]} -// MAPPING-NEXT: %61 = "neura.data_mov"(%13) {dfg_id = 52 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %62 = neura.zext %61 {dfg_id = 57 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %63 = "neura.data_mov"(%62) {dfg_id = 66 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 4016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 4016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 4016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %64 = "neura.shl"(%63) {dfg_id = 72 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %65 = "neura.data_mov"(%16) {dfg_id = 50 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%19) {dfg_id = 49 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.data_mov"(%64) {dfg_id = 83 : i32, mapping_locs = [{id = 4009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.memset"(%65, %66, %67) <{is_volatile = false}> {dfg_id = 93 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () +// MAPPING-NEXT: %28 = "neura.data_mov"(%2) {dfg_id = 22 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 45 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 55 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 24 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 44 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 54 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%5) {dfg_id = 26 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.data_mov"(%27) {dfg_id = 43 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 26 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 12008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 53 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%30) {dfg_id = 61 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %38 = "neura.icmp"(%37) <{cmpType = "sgt"}> {dfg_id = 67 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %39 = "neura.data_mov"(%38) {dfg_id = 76 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %40 = "neura.not"(%39) {dfg_id = 87 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %41 = "neura.data_mov"(%40) {dfg_id = 97 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %42 = "neura.data_mov"(%40) {dfg_id = 98 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %43 = neura.grant_predicate %41, %42 {dfg_id = 108 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %44 = "neura.data_mov"(%30) {dfg_id = 60 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %45 = "neura.data_mov"(%38) {dfg_id = 75 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %46 = neura.grant_predicate %44, %45 {dfg_id = 86 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %47 = "neura.data_mov"(%33) {dfg_id = 59 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %48 = "neura.data_mov"(%38) {dfg_id = 74 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %49 = neura.grant_predicate %47, %48 {dfg_id = 85 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %50 = "neura.data_mov"(%36) {dfg_id = 58 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 416 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %51 = "neura.data_mov"(%38) {dfg_id = 73 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 30 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %52 = neura.grant_predicate %50, %51 {dfg_id = 84 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %53 = "neura.data_mov"(%46) {dfg_id = 96 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %54 = neura.zext %53 {dfg_id = 107 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %55 = "neura.data_mov"(%54) {dfg_id = 116 : i32, mapping_locs = [{id = 8001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 8001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 8001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %56 = "neura.shl"(%55) {dfg_id = 132 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %57 = "neura.data_mov"(%49) {dfg_id = 95 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 8009 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 8009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%52) {dfg_id = 94 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 39 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %59 = "neura.data_mov"(%56) {dfg_id = 143 : i32, mapping_locs = [{id = 8016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.memset"(%57, %58, %59) <{is_volatile = false}> {dfg_id = 162 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () +// MAPPING-NEXT: %60 = "neura.data_mov"(%56) {dfg_id = 142 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %60 : !neura.data {dfg_id = 161 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} +// MAPPING-NEXT: %61 = "neura.data_mov"(%13) {dfg_id = 52 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 289 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 289 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 289 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 289 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 289 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 289 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %62 = neura.zext %61 {dfg_id = 57 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %63 = "neura.data_mov"(%62) {dfg_id = 66 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %64 = "neura.shl"(%63) {dfg_id = 72 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %65 = "neura.data_mov"(%16) {dfg_id = 50 : i32, mapping_locs = [{id = 304 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 30 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%19) {dfg_id = 49 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.data_mov"(%64) {dfg_id = 83 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 43 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.memset"(%65, %66, %67) <{is_volatile = false}> {dfg_id = 93 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data, !neura.data, !neura.data) -> () // MAPPING-NEXT: %68 = "neura.data_mov"(%22) {dfg_id = 48 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %69 = "neura.icmp"(%68) <{cmpType = "sgt"}> {dfg_id = 56 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 65 : i32, mapping_locs = [{id = 2009 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 1009 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 1009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 1009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 1009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 1009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %71 = "neura.not"(%70) {dfg_id = 71 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.data_mov"(%22) {dfg_id = 47 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 2008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %73 = "neura.data_mov"(%69) {dfg_id = 64 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 65 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 3000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 3000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 3000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 3000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 3000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 3000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %71 = "neura.not"(%70) {dfg_id = 71 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.data_mov"(%22) {dfg_id = 47 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %73 = "neura.data_mov"(%69) {dfg_id = 64 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %74 = neura.grant_predicate %72, %73 {dfg_id = 70 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %75 = "neura.data_mov"(%13) {dfg_id = 51 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %76 = "neura.data_mov"(%69) {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data @@ -250,9 +250,9 @@ // MAPPING-NEXT: %78 = "neura.data_mov"(%25) {dfg_id = 46 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %79 = "neura.data_mov"(%69) {dfg_id = 62 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %80 = neura.grant_predicate %78, %79 {dfg_id = 68 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%71) {dfg_id = 81 : i32, mapping_locs = [{id = 1001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.data_mov"(%71) {dfg_id = 82 : i32, mapping_locs = [{id = 1009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 1009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = neura.grant_predicate %81, %82 {dfg_id = 92 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%71) {dfg_id = 81 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.data_mov"(%71) {dfg_id = 82 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = neura.grant_predicate %81, %82 {dfg_id = 92 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %84 = "neura.data_mov"(%74) {dfg_id = 80 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %85 = neura.zext %84 {dfg_id = 91 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data -> !neura.data // MAPPING-NEXT: %86 = "neura.data_mov"(%77) {dfg_id = 79 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data @@ -269,15 +269,15 @@ // MAPPING-NEXT: %97 = neura.reserve {dfg_id = 10 : i32} : !neura.data // MAPPING-NEXT: %98 = "neura.data_mov"(%80) {dfg_id = 77 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %99 = neura.phi_start %98, %97 {dfg_id = 88 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 101 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 328 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 328 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 101 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 111 : i32, lhs_value = "%arg4", mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 123 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 456 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 43 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 40 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%102) {dfg_id = 135 : i32, lhs_value = 0.000000e+00 : f64, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> () -// MAPPING-NEXT: %103 = "neura.data_mov"(%99) {dfg_id = 100 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 448 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 448 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %104 = "neura.gep"(%103) <{operandSegmentSizes = array}> {dfg_id = 110 : i32, lhs_value = "%arg6", mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 123 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 30 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 40 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 12001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 12001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 12001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%102) {dfg_id = 135 : i32, lhs_value = 0.000000e+00 : f64, mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> () +// MAPPING-NEXT: %103 = "neura.data_mov"(%99) {dfg_id = 100 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %104 = "neura.gep"(%103) <{operandSegmentSizes = array}> {dfg_id = 110 : i32, lhs_value = "%arg6", mapping_locs = [{id = 9 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %105 = neura.reserve {dfg_id = 11 : i32} : !neura.data -// MAPPING-NEXT: %106 = "neura.data_mov"(%96) {dfg_id = 103 : i32, mapping_locs = [{id = 216 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 216 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 216 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 216 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 216 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 216 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %107 = neura.phi_start %106, %105 {dfg_id = 113 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %106 = "neura.data_mov"(%96) {dfg_id = 103 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 225 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 225 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 225 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 225 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %107 = neura.phi_start %106, %105 {dfg_id = 113 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %108 = neura.reserve {dfg_id = 12 : i32} : !neura.data // MAPPING-NEXT: %109 = "neura.data_mov"(%90) {dfg_id = 131 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %110 = neura.phi_start %109, %108 {dfg_id = 141 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data @@ -285,129 +285,129 @@ // MAPPING-NEXT: %112 = "neura.data_mov"(%93) {dfg_id = 130 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %113 = neura.phi_start %112, %111 {dfg_id = 140 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %114 = neura.reserve {dfg_id = 14 : i32} : !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%101) {dfg_id = 122 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = neura.phi_start %115, %114 {dfg_id = 134 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%101) {dfg_id = 122 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = neura.phi_start %115, %114 {dfg_id = 134 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %117 = neura.reserve {dfg_id = 15 : i32} : !neura.data // MAPPING-NEXT: %118 = "neura.data_mov"(%99) {dfg_id = 99 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %119 = neura.phi_start %118, %117 {dfg_id = 109 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %120 = neura.reserve {dfg_id = 16 : i32} : !neura.data -// MAPPING-NEXT: %121 = "neura.data_mov"(%104) {dfg_id = 121 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %122 = neura.phi_start %121, %120 {dfg_id = 133 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %121 = "neura.data_mov"(%104) {dfg_id = 121 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %122 = neura.phi_start %121, %120 {dfg_id = 133 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %123 = neura.reserve {dfg_id = 17 : i32} : !neura.data // MAPPING-NEXT: %124 = "neura.data_mov"(%96) {dfg_id = 102 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %125 = neura.phi_start %124, %123 {dfg_id = 112 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 127 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 18 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 224 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 127 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 224 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 224 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %127 = "neura.gep"(%126) <{operandSegmentSizes = array}> {dfg_id = 139 : i32, lhs_value = "%arg3", mapping_locs = [{id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %128 = "neura.data_mov"(%127) {dfg_id = 155 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %129 = "neura.load"(%128) {dfg_id = 168 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %130 = "neura.data_mov"(%122) {dfg_id = 145 : i32, mapping_locs = [{id = 43 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 40 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %128 = "neura.data_mov"(%127) {dfg_id = 155 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 3001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 3001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 3001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %129 = "neura.load"(%128) {dfg_id = 168 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %130 = "neura.data_mov"(%122) {dfg_id = 145 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 163 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %132 = "neura.data_mov"(%119) {dfg_id = 120 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 352 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 352 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %133 = "neura.data_mov"(%125) {dfg_id = 126 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 23 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 353 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %134 = "neura.gep"(%132, %133) <{operandSegmentSizes = array}> {dfg_id = 138 : i32, lhs_value = "%arg2", mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %135 = "neura.data_mov"(%134) {dfg_id = 153 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 22 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 3008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 3008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %136 = "neura.load"(%135) {dfg_id = 167 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %137 = "neura.data_mov"(%131) {dfg_id = 170 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 41 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 44 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 47 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %138 = "neura.data_mov"(%136) {dfg_id = 174 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 23 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %139 = "neura.data_mov"(%129) {dfg_id = 175 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 23 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 352 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 352 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 352 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %140 = "neura.fmul_fadd"(%137, %138, %139) {dfg_id = 182 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %141 = "neura.data_mov"(%140) {dfg_id = 189 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 22 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %142 = "neura.data_mov"(%127) {dfg_id = 154 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 18 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 22 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 3000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 3000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 3000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%141, %142) {dfg_id = 203 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %143 = "neura.data_mov"(%116) {dfg_id = 148 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 164 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %145 = "neura.data_mov"(%134) {dfg_id = 152 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 31 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 27 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %132 = "neura.data_mov"(%119) {dfg_id = 120 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 321 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 321 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 321 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %133 = "neura.data_mov"(%125) {dfg_id = 126 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 328 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 328 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %134 = "neura.gep"(%132, %133) <{operandSegmentSizes = array}> {dfg_id = 138 : i32, lhs_value = "%arg2", mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %135 = "neura.data_mov"(%134) {dfg_id = 153 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 27 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %136 = "neura.load"(%135) {dfg_id = 167 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %137 = "neura.data_mov"(%131) {dfg_id = 170 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %138 = "neura.data_mov"(%136) {dfg_id = 174 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 8000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %139 = "neura.data_mov"(%129) {dfg_id = 175 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 21 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 31 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 27 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %140 = "neura.fmul_fadd"(%137, %138, %139) {dfg_id = 182 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %141 = "neura.data_mov"(%140) {dfg_id = 189 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %142 = "neura.data_mov"(%127) {dfg_id = 154 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 17 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 4024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8010 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 8010 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 8010 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 8010 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 8010 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%141, %142) {dfg_id = 203 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %143 = "neura.data_mov"(%116) {dfg_id = 148 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 19 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 164 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %145 = "neura.data_mov"(%134) {dfg_id = 152 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 27 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %146 = "neura.load"(%145) {dfg_id = 166 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %147 = "neura.data_mov"(%125) {dfg_id = 125 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 137 : i32, lhs_value = "%arg5", mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 151 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 165 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %151 = "neura.data_mov"(%146) {dfg_id = 173 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %152 = "neura.data_mov"(%150) {dfg_id = 172 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %153 = "neura.data_mov"(%144) {dfg_id = 171 : i32, mapping_locs = [{id = 8016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 8016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %154 = "neura.fmul_fadd"(%151, %152, %153) {dfg_id = 181 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %155 = "neura.data_mov"(%154) {dfg_id = 188 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %156 = "neura.data_mov"(%116) {dfg_id = 147 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 8024 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 8024 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 8024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%155, %156) {dfg_id = 202 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %147 = "neura.data_mov"(%125) {dfg_id = 125 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 23 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 352 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 137 : i32, lhs_value = "%arg5", mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 151 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 22 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 165 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %151 = "neura.data_mov"(%146) {dfg_id = 173 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 11 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %152 = "neura.data_mov"(%150) {dfg_id = 172 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %153 = "neura.data_mov"(%144) {dfg_id = 171 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %154 = "neura.fmul_fadd"(%151, %152, %153) {dfg_id = 181 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %155 = "neura.data_mov"(%154) {dfg_id = 188 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %156 = "neura.data_mov"(%116) {dfg_id = 147 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 25 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 4016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 4016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 4016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 4016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%155, %156) {dfg_id = 202 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %157 = "neura.data_mov"(%125) {dfg_id = 124 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %158 = "neura.add"(%157) {dfg_id = 136 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %159 = "neura.data_mov"(%158) {dfg_id = 150 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %160 = "neura.data_mov"(%113) {dfg_id = 158 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 200 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %161 = "neura.icmp"(%159, %160) <{cmpType = "eq"}> {dfg_id = 169 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %162 = "neura.data_mov"(%161) {dfg_id = 180 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %163 = "neura.not"(%162) {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %164 = "neura.data_mov"(%158) {dfg_id = 149 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 208 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 208 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %165 = "neura.data_mov"(%163) {dfg_id = 201 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %166 = neura.grant_predicate %164, %165 {dfg_id = 211 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %166 -> %123 {dfg_id = 220 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %167 = "neura.data_mov"(%122) {dfg_id = 144 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 448 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 448 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 448 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %168 = "neura.data_mov"(%163) {dfg_id = 200 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 34 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %169 = neura.grant_predicate %167, %168 {dfg_id = 210 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %169 -> %120 {dfg_id = 219 : i32, mapping_locs = [{id = 456 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 456 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 456 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 456 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 456 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 456 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 456 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 456 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %170 = "neura.data_mov"(%119) {dfg_id = 119 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 32 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 360 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 360 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 360 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 360 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 360 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %171 = "neura.data_mov"(%163) {dfg_id = 199 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 23 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %172 = neura.grant_predicate %170, %171 {dfg_id = 209 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %172 -> %117 {dfg_id = 218 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 337 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}, {id = 337 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 337 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 337 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %173 = "neura.data_mov"(%116) {dfg_id = 146 : i32, mapping_locs = [{id = 305 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 305 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 305 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 305 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 305 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %174 = "neura.data_mov"(%163) {dfg_id = 198 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %175 = neura.grant_predicate %173, %174 {dfg_id = 208 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %175 -> %114 {dfg_id = 217 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %176 = "neura.data_mov"(%113) {dfg_id = 157 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %177 = "neura.data_mov"(%163) {dfg_id = 197 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %178 = neura.grant_predicate %176, %177 {dfg_id = 207 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %178 -> %111 {dfg_id = 216 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %179 = "neura.data_mov"(%110) {dfg_id = 160 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 218 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 11 : i32}, {id = 218 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 12 : i32}, {id = 218 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 13 : i32}, {id = 218 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 14 : i32}, {id = 218 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 15 : i32}, {id = 218 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %180 = "neura.data_mov"(%163) {dfg_id = 196 : i32, mapping_locs = [{id = 210 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 12 : i32}, {id = 210 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 13 : i32}, {id = 210 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 14 : i32}, {id = 210 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 15 : i32}, {id = 210 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %181 = neura.grant_predicate %179, %180 {dfg_id = 206 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %181 -> %108 {dfg_id = 215 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 2017 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 2017 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 2017 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 2017 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %182 = "neura.data_mov"(%107) {dfg_id = 129 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %183 = "neura.data_mov"(%163) {dfg_id = 195 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 224 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %184 = neura.grant_predicate %182, %183 {dfg_id = 205 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %184 -> %105 {dfg_id = 214 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 217 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 21 : i32}, {id = 217 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 22 : i32}, {id = 217 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 23 : i32}, {id = 217 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 24 : i32}, {id = 217 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %185 = "neura.data_mov"(%119) {dfg_id = 118 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %186 = "neura.data_mov"(%161) {dfg_id = 179 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %187 = neura.grant_predicate %185, %186 {dfg_id = 186 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %188 = "neura.data_mov"(%110) {dfg_id = 159 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 2000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %189 = "neura.data_mov"(%161) {dfg_id = 178 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %190 = neura.grant_predicate %188, %189 {dfg_id = 185 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %191 = "neura.data_mov"(%107) {dfg_id = 128 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %192 = "neura.data_mov"(%161) {dfg_id = 177 : i32, mapping_locs = [{id = 209 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 11 : i32}, {id = 209 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 209 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 209 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %193 = neura.grant_predicate %191, %192 {dfg_id = 184 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %194 = "neura.data_mov"(%113) {dfg_id = 156 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %195 = "neura.data_mov"(%161) {dfg_id = 176 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %196 = neura.grant_predicate %194, %195 {dfg_id = 183 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %197 = "neura.data_mov"(%187) {dfg_id = 194 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %198 = "neura.add"(%197) {dfg_id = 204 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %199 = "neura.data_mov"(%198) {dfg_id = 213 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %200 = "neura.data_mov"(%190) {dfg_id = 193 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 20 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %201 = "neura.icmp"(%199, %200) <{cmpType = "eq"}> {dfg_id = 221 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %202 = "neura.data_mov"(%201) {dfg_id = 224 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %203 = "neura.not"(%202) {dfg_id = 226 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %204 = "neura.data_mov"(%198) {dfg_id = 212 : i32, mapping_locs = [{id = 344 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 344 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 344 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 344 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %205 = "neura.data_mov"(%203) {dfg_id = 231 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %159 = "neura.data_mov"(%158) {dfg_id = 150 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %160 = "neura.data_mov"(%113) {dfg_id = 158 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %161 = "neura.icmp"(%159, %160) <{cmpType = "eq"}> {dfg_id = 169 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %162 = "neura.data_mov"(%161) {dfg_id = 180 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %163 = "neura.not"(%162) {dfg_id = 187 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %164 = "neura.data_mov"(%158) {dfg_id = 149 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %165 = "neura.data_mov"(%163) {dfg_id = 201 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %166 = neura.grant_predicate %164, %165 {dfg_id = 211 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %166 -> %123 {dfg_id = 220 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %167 = "neura.data_mov"(%122) {dfg_id = 144 : i32, mapping_locs = [{id = 292 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 292 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 292 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 292 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}, {id = 292 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}, {id = 292 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %168 = "neura.data_mov"(%163) {dfg_id = 200 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 297 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 297 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 297 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 297 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 297 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %169 = neura.grant_predicate %167, %168 {dfg_id = 210 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %169 -> %120 {dfg_id = 219 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %170 = "neura.data_mov"(%119) {dfg_id = 119 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 291 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 291 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 291 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 291 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 291 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 291 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 291 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %171 = "neura.data_mov"(%163) {dfg_id = 199 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 297 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 297 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 297 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 297 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %172 = neura.grant_predicate %170, %171 {dfg_id = 209 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %172 -> %117 {dfg_id = 218 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 328 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 328 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %173 = "neura.data_mov"(%116) {dfg_id = 146 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %174 = "neura.data_mov"(%163) {dfg_id = 198 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %175 = neura.grant_predicate %173, %174 {dfg_id = 208 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %175 -> %114 {dfg_id = 217 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 329 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 329 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 329 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 329 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 329 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 329 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 329 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %176 = "neura.data_mov"(%113) {dfg_id = 157 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %177 = "neura.data_mov"(%163) {dfg_id = 197 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %178 = neura.grant_predicate %176, %177 {dfg_id = 207 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %178 -> %111 {dfg_id = 216 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %179 = "neura.data_mov"(%110) {dfg_id = 160 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 20 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 322 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 322 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 322 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %180 = "neura.data_mov"(%163) {dfg_id = 196 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %181 = neura.grant_predicate %179, %180 {dfg_id = 206 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %181 -> %108 {dfg_id = 215 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 201 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 2016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 2016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 2016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 2016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %182 = "neura.data_mov"(%107) {dfg_id = 129 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 17 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %183 = "neura.data_mov"(%163) {dfg_id = 195 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 169 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 169 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 169 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %184 = neura.grant_predicate %182, %183 {dfg_id = 205 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %184 -> %105 {dfg_id = 214 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 201 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 18 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 232 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 232 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 232 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 232 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 232 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 232 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %185 = "neura.data_mov"(%119) {dfg_id = 118 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %186 = "neura.data_mov"(%161) {dfg_id = 179 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %187 = neura.grant_predicate %185, %186 {dfg_id = 186 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %188 = "neura.data_mov"(%110) {dfg_id = 159 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %189 = "neura.data_mov"(%161) {dfg_id = 178 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %190 = neura.grant_predicate %188, %189 {dfg_id = 185 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %191 = "neura.data_mov"(%107) {dfg_id = 128 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 17 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %192 = "neura.data_mov"(%161) {dfg_id = 177 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %193 = neura.grant_predicate %191, %192 {dfg_id = 184 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %194 = "neura.data_mov"(%113) {dfg_id = 156 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %195 = "neura.data_mov"(%161) {dfg_id = 176 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %196 = neura.grant_predicate %194, %195 {dfg_id = 183 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %197 = "neura.data_mov"(%187) {dfg_id = 194 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %198 = "neura.add"(%197) {dfg_id = 204 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %199 = "neura.data_mov"(%198) {dfg_id = 213 : i32, mapping_locs = [{id = 201 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 201 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %200 = "neura.data_mov"(%190) {dfg_id = 193 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %201 = "neura.icmp"(%199, %200) <{cmpType = "eq"}> {dfg_id = 221 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %202 = "neura.data_mov"(%201) {dfg_id = 224 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %203 = "neura.not"(%202) {dfg_id = 226 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %204 = "neura.data_mov"(%198) {dfg_id = 212 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %205 = "neura.data_mov"(%203) {dfg_id = 231 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %206 = neura.grant_predicate %204, %205 {dfg_id = 236 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %206 -> %97 {dfg_id = 241 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %207 = "neura.data_mov"(%193) {dfg_id = 191 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %208 = "neura.data_mov"(%203) {dfg_id = 230 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = neura.grant_predicate %207, %208 {dfg_id = 235 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %209 -> %94 {dfg_id = 240 : i32, mapping_locs = [{id = 201 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 201 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %210 = "neura.data_mov"(%196) {dfg_id = 190 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %211 = "neura.data_mov"(%203) {dfg_id = 229 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %212 = neura.grant_predicate %210, %211 {dfg_id = 234 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %212 -> %91 {dfg_id = 239 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 169 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 169 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 169 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %213 = "neura.data_mov"(%190) {dfg_id = 192 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 201 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 201 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %214 = "neura.data_mov"(%203) {dfg_id = 228 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %215 = neura.grant_predicate %213, %214 {dfg_id = 233 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %215 -> %88 {dfg_id = 238 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 2016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 2016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 2016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 2016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %216 = "neura.data_mov"(%201) {dfg_id = 222 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %217 = "neura.data_mov"(%201) {dfg_id = 223 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %218 = neura.grant_predicate %216, %217 {dfg_id = 225 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %219 = "neura.data_mov"(%83) {dfg_id = 106 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 20 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %220 = "neura.data_mov"(%43) {dfg_id = 117 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 20 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 336 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 336 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %221 = "neura.data_mov"(%218) {dfg_id = 227 : i32, mapping_locs = [{id = 345 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 16 : i32}, {id = 345 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %222 = "neura.phi"(%219, %220, %221) {dfg_id = 232 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %223 = "neura.data_mov"(%222) {dfg_id = 237 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %223 : !neura.data {dfg_id = 242 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 2 : i32}]} +// MAPPING-NEXT: %207 = "neura.data_mov"(%193) {dfg_id = 191 : i32, mapping_locs = [{id = 170 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 170 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 170 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 170 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %208 = "neura.data_mov"(%203) {dfg_id = 230 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = neura.grant_predicate %207, %208 {dfg_id = 235 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %209 -> %94 {dfg_id = 240 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %210 = "neura.data_mov"(%196) {dfg_id = 190 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 208 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 208 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 208 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 208 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %211 = "neura.data_mov"(%203) {dfg_id = 229 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %212 = neura.grant_predicate %210, %211 {dfg_id = 234 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %212 -> %91 {dfg_id = 239 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %213 = "neura.data_mov"(%190) {dfg_id = 192 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 2001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 2001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 2001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 2001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %214 = "neura.data_mov"(%203) {dfg_id = 228 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 2016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %215 = neura.grant_predicate %213, %214 {dfg_id = 233 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %215 -> %88 {dfg_id = 238 : i32, mapping_locs = [{id = 2009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 2009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 2009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %216 = "neura.data_mov"(%201) {dfg_id = 222 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %217 = "neura.data_mov"(%201) {dfg_id = 223 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %218 = neura.grant_predicate %216, %217 {dfg_id = 225 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %219 = "neura.data_mov"(%83) {dfg_id = 106 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 224 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 224 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %220 = "neura.data_mov"(%43) {dfg_id = 117 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 18 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 232 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %221 = "neura.data_mov"(%218) {dfg_id = 227 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %222 = "neura.phi"(%219, %220, %221) {dfg_id = 232 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %223 = "neura.data_mov"(%222) {dfg_id = 237 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %223 : !neura.data {dfg_id = 242 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 1 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 18 : i32} // MAPPING-NEXT: } // MAPPING-NEXT: } @@ -415,7 +415,7 @@ // YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 10 +// YAML-NEXT: compiled_ii: 12 // YAML-NEXT: cores: // YAML-NEXT: - column: 0 // YAML-NEXT: row: 0 @@ -425,159 +425,141 @@ // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 3 +// YAML-NEXT: - opcode: "CONSTANT" +// YAML-NEXT: id: 1 // YAML-NEXT: time_step: 0 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" +// YAML-NEXT: - operand: "arg0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 19 +// YAML-NEXT: - opcode: "ICMP_SGT" +// YAML-NEXT: id: 28 // YAML-NEXT: time_step: 1 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "#0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 34 -// YAML-NEXT: time_step: 3 +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 30 +// YAML-NEXT: time_step: 2 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: id: 171 +// YAML-NEXT: time_step: 16 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$2" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 46 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 22 // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 400001 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: id: 173 +// YAML-NEXT: time_step: 17 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 6 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 47 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 28 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "FMUL_FADD" +// YAML-NEXT: id: 181 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$16" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 720001 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$2" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 84 -// YAML-NEXT: time_step: 7 +// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 37 +// YAML-NEXT: time_step: 9 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 10 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 730001 -// YAML-NEXT: time_step: 8 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 55 +// YAML-NEXT: time_step: 10 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: - index_per_ii: 11 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 92 -// YAML-NEXT: time_step: 9 +// YAML-NEXT: - opcode: "ICMP_SGT" +// YAML-NEXT: id: 67 +// YAML-NEXT: time_step: 11 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "#0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$16" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - column: 1 // YAML-NEXT: row: 0 @@ -587,85 +569,118 @@ // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 1310001 -// YAML-NEXT: time_step: 10 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 185 +// YAML-NEXT: time_step: 12 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 130 -// YAML-NEXT: time_step: 11 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 740001 +// YAML-NEXT: time_step: 12 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 69 -// YAML-NEXT: time_step: 5 +// YAML-NEXT: id: 350001 +// YAML-NEXT: time_step: 3 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 64 -// YAML-NEXT: time_step: 6 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 330001 +// YAML-NEXT: time_step: 3 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 1710001 +// YAML-NEXT: time_step: 15 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 +// YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 65 -// YAML-NEXT: time_step: 7 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 220002 +// YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 1720002 +// YAML-NEXT: time_step: 17 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 +// YAML-NEXT: - index_per_ii: 6 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 78 -// YAML-NEXT: time_step: 8 +// YAML-NEXT: id: 69 +// YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 7 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ZEXT" +// YAML-NEXT: id: 90 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: - index_per_ii: 11 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 55 -// YAML-NEXT: time_step: 9 +// YAML-NEXT: id: 159 +// YAML-NEXT: time_step: 11 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" @@ -676,272 +691,319 @@ // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 127 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 1930001 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "4" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 102 -// YAML-NEXT: time_step: 10 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 192 +// YAML-NEXT: time_step: 13 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$24" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 20 +// YAML-NEXT: - operand: "$1" -// ASM: # Compiled II: 10 +// ASM: # Compiled II: 12 // ASM: PE(0,0): // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [$0], [NORTH, RED] (t=0, inv_iters=0) +// ASM-NEXT: CONSTANT, [arg0] -> [$0] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$8], [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: GRANT_ONCE, [$0] -> [NORTH, RED], [EAST, RED], [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [EAST, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [$1] -> [EAST, RED], [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: FMUL_FADD, [$8], [EAST, RED], [$2] -> [NORTH, RED] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$8], [$16] -> [$0], [EAST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: NOT, [$0] -> [$8], [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [$0], [NORTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$16] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [NORTH, RED], [EAST, RED] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) // ASM: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [WEST, RED] (t=10, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [EAST, RED] (t=12, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=12, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: STORE, [NORTH, RED], [$0] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: LOAD, [WEST, RED] -> [WEST, RED] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [EAST, RED] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: LOAD, [WEST, RED] -> [WEST, RED] (t=7, inv_iters=0) +// ASM-NEXT: ZEXT, [$0] -> [NORTH, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$0] -> [EAST, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) // ASM: PE(2,0): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [NORTH, RED] -> [WEST, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(0,1): -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$24] (t=10, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [EAST, RED] -> [$0], [NORTH, RED], [EAST, RED], [$8] (t=1, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=13, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=13, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$16] -> [$9], [$16], [SOUTH, RED], [$0] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: LOAD, [NORTH, RED] -> [WEST, RED] (t=14, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED], [$0] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$16] -> [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$8], [$24] -> [SOUTH, RED], [$0] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [EAST, RED] (t=5, inv_iters=0) +// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [EAST, RED], [$8], [WEST, RED], [NORTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GEP, [NORTH, RED], [$9] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$16] -> [$9] (t=18, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$16] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [NORTH, RED], [$0] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: MUL, [SOUTH, RED], [$0] -> [NORTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=8, inv_iters=0) +// ASM-NEXT: ZEXT, [$0] -> [$0] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: ADD, [SOUTH, RED], [NORTH, RED] -> [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$9] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$9], [$0] -> [WEST, RED] (t=10, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=10, inv_iters=1) +// ASM-NEXT: PHI_START, [$0], [$16] -> [NORTH, RED], [WEST, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM: PE(3,0): +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$0] (t=12, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: SHL, [WEST, RED], [#5] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [NORTH, RED] (t=13, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=13, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [arg1] -> [WEST, RED] (t=2, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=14, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg0], [$0] -> [NORTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: LOAD, [$0] -> [WEST, RED] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [WEST, RED], [SOUTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: LOAD, [$1] -> [NORTH, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$8], [EAST, RED], [$24], [NORTH, RED], [$16], [WEST, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: ADD, [WEST, RED], [#1] -> [EAST, RED], [$9] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$24] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) +// ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [NORTH, RED] (t=12, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=12, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: NOT, [$0] -> [$0] (t=13, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [WEST, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(2,1): +// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [EAST, RED] (t=14, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [$0] (t=10, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [$8], [$16] (t=7, inv_iters=0) +// ASM-NEXT: STORE, [SOUTH, RED], [$16] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [WEST, RED], [SOUTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(3,1): +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: CONSTANT, [arg3] -> [NORTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM: PE(0,2): +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$8] (t=10, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=10, inv_iters=1) +// ASM-NEXT: NOT, [$0] -> [EAST, RED], [NORTH, RED], [$1], [$9] (t=12, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [EAST, RED] (t=13, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=13, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$8], [$1] -> [$8] (t=14, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=14, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=3, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$10] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [$0] -> [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$9] -> [EAST, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg4], [$1] -> [NORTH, RED], [$0] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [NORTH, RED], [$8], [EAST, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [EAST, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$10], [$1] -> [EAST, RED] (t=19, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$0] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [SOUTH, RED] -> [SOUTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [$0] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [SOUTH, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [$0], [$8] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(1,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$16], [$9] -> [$0] (t=10, inv_iters=1) +// ASM-NEXT: ICMP_EQ, [EAST, RED], [$0] -> [$0], [EAST, RED], [SOUTH, RED] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM: PE(2,1): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [$0] (t=12, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$24], [$10] -> [$1] (t=11, inv_iters=1) +// ASM-NEXT: ADD, [$0], [#1] -> [$9], [NORTH, RED] (t=13, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=13, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=13, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=13, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [WEST, RED], [$24] (t=4, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$8] (t=14, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=14, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=14, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=14, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$16] (t=14, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [$9], [$0] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [NORTH, RED], [WEST, RED], [$1], [SOUTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [WEST, RED], [$16] (t=5, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [SOUTH, RED] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$16], [$1] -> [WEST, RED] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=18, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [EAST, RED] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$9] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$0] -> [$0], [NORTH, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$10] (t=8, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [WEST, RED] -> [EAST, RED], [$0] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [EAST, RED], [NORTH, RED], [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(3,2): // ASM-NEXT: { -// ASM-NEXT: CONSTANT, [#0] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: ADD, [$0], [#1] -> [WEST, RED], [$8] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: MEMSET, [SOUTH, RED], [$0], [NORTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(0,3): +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM: PE(3,1): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: GEP, [arg3], [$0] -> [SOUTH, RED], [WEST, RED] (t=12, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$1], [$8] -> [WEST, RED] (t=13, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=13, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=14, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: PHI, [$0], [$8], [WEST, RED] -> [$0] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: LOAD, [SOUTH, RED] -> [SOUTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: RETURN_VOID, [$0] (t=19, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$8] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: STORE, [#0], [$0] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(3,3): // ASM-NEXT: { -// ASM-NEXT: CONSTANT, [#32] -> [SOUTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM: PE(0,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [arg4] -> [$0] (t=12, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [EAST, RED] (t=13, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=13, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=13, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: ZEXT, [$0] -> [$1] (t=14, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=14, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [EAST, RED] -> [SOUTH, RED] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: LOAD, [$0] -> [$0] (t=16, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$9] (t=16, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: SHL, [$1], [#3] -> [$16], [NORTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=17, inv_iters=1) // RUN: mlir-neura-opt %t-kernel.mlir --view-op-graph 2>&1 | sed -n '/^digraph G {/,/^}$/p' > bicg_kernel_original.dot // RUN: dot -Tpng bicg_kernel_original.dot -o bicg_kernel_original.png @@ -965,7 +1027,7 @@ // DOT-NEXT: compound = true; // DOT-NEXT: subgraph cluster_1 { // DOT-NEXT: v2 [label = " ", shape = plain]; -// DOT-NEXT: label = "builtin.module : ()\n\ndlti.dl_spec: #dlti.dl_spec !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 19 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 12 : i32, res_mii = 8 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 12 : i32, res_mii = 8 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 0 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 128 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = 1 : i32}> {dfg_id = 2 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data @@ -31,7 +31,7 @@ // MAPPING-NEXT: %5 = "neura.data_mov"(%3) {dfg_id = 33 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %6 = neura.phi_start %5, %4 {dfg_id = 38 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %7 = neura.reserve {dfg_id = 5 : i32} : !neura.data -// MAPPING-NEXT: %8 = "neura.data_mov"(%0) {dfg_id = 29 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 7 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 193 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %8 = "neura.data_mov"(%0) {dfg_id = 29 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 7 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 200 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %9 = neura.phi_start %8, %7 {dfg_id = 34 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %10 = neura.reserve {dfg_id = 6 : i32} : !neura.data // MAPPING-NEXT: %11 = "neura.data_mov"(%2) {dfg_id = 32 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data @@ -47,18 +47,18 @@ // MAPPING-NEXT: %21 = "neura.data_mov"(%18) {dfg_id = 41 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %22 = "neura.data_mov"(%20) {dfg_id = 62 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %23 = neura.grant_predicate %21, %22 {dfg_id = 70 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%15) {dfg_id = 43 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 1 : i32}, {id = 29 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.data_mov"(%20) {dfg_id = 61 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%15) {dfg_id = 43 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.data_mov"(%20) {dfg_id = 61 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %26 = neura.grant_predicate %24, %25 {dfg_id = 69 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %27 = "neura.data_mov"(%12) {dfg_id = 46 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 29 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%20) {dfg_id = 60 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 2 : i32}, {id = 162 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 162 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 162 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 162 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 162 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 162 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 162 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%20) {dfg_id = 60 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 176 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 176 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 176 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %29 = neura.grant_predicate %27, %28 {dfg_id = 68 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %30 = "neura.data_mov"(%6) {dfg_id = 48 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %31 = "neura.data_mov"(%20) {dfg_id = 59 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %32 = neura.grant_predicate %30, %31 {dfg_id = 67 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %33 = "neura.data_mov"(%20) {dfg_id = 58 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 4002 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 4002 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 4002 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 4002 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %33 = "neura.data_mov"(%20) {dfg_id = 58 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %34 = "neura.not"(%33) {dfg_id = 66 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.data_mov"(%6) {dfg_id = 47 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 27 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 8002 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 8002 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 8002 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 8002 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 8002 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 8002 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 8002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 8002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 8002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 8002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.data_mov"(%6) {dfg_id = 47 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 8001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 8001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 8001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 8001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 8001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 8001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 8001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 8001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 8001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 8001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 8001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %36 = "neura.data_mov"(%34) {dfg_id = 75 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %37 = neura.grant_predicate %35, %36 {dfg_id = 85 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %38 = "neura.data_mov"(%23) {dfg_id = 82 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data @@ -76,10 +76,10 @@ // MAPPING-NEXT: %50 = "neura.data_mov"(%45) {dfg_id = 108 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %51 = neura.phi_start %50, %49 {dfg_id = 122 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %52 = neura.reserve {dfg_id = 11 : i32} : !neura.data -// MAPPING-NEXT: %53 = "neura.data_mov"(%32) {dfg_id = 77 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 289 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 289 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 289 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 289 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %53 = "neura.data_mov"(%32) {dfg_id = 77 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %54 = neura.phi_start %53, %52 {dfg_id = 87 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %55 = neura.reserve {dfg_id = 12 : i32} : !neura.data -// MAPPING-NEXT: %56 = "neura.data_mov"(%26) {dfg_id = 79 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %56 = "neura.data_mov"(%26) {dfg_id = 79 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %57 = neura.phi_start %56, %55 {dfg_id = 89 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %58 = neura.reserve {dfg_id = 13 : i32} : !neura.data // MAPPING-NEXT: %59 = "neura.data_mov"(%41) {dfg_id = 109 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data @@ -119,19 +119,19 @@ // MAPPING-NEXT: %93 = "neura.data_mov"(%54) {dfg_id = 104 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 322 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 322 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 322 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 322 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %94 = neura.phi_start %93, %92 {dfg_id = 119 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %95 = neura.reserve {dfg_id = 17 : i32} : !neura.data -// MAPPING-NEXT: %96 = "neura.data_mov"(%57) {dfg_id = 106 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %97 = neura.phi_start %96, %95 {dfg_id = 121 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %96 = "neura.data_mov"(%57) {dfg_id = 106 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 169 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 169 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 169 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 169 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %97 = neura.phi_start %96, %95 {dfg_id = 121 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %98 = neura.reserve {dfg_id = 18 : i32} : !neura.data -// MAPPING-NEXT: %99 = "neura.data_mov"(%60) {dfg_id = 141 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 4003 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 6 : i32}, {id = 4003 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 7 : i32}, {id = 4003 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 4003 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 4003 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 4003 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 4003 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 4003 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 4003 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %100 = neura.phi_start %99, %98 {dfg_id = 148 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %99 = "neura.data_mov"(%60) {dfg_id = 141 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %100 = neura.phi_start %99, %98 {dfg_id = 148 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %101 = neura.reserve {dfg_id = 19 : i32} : !neura.data -// MAPPING-NEXT: %102 = "neura.data_mov"(%63) {dfg_id = 143 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 194 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 194 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 194 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 194 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 194 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 194 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %102 = "neura.data_mov"(%63) {dfg_id = 143 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 193 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %103 = neura.phi_start %102, %101 {dfg_id = 150 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %104 = neura.reserve {dfg_id = 20 : i32} : !neura.data // MAPPING-NEXT: %105 = "neura.data_mov"(%48) {dfg_id = 137 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %106 = neura.phi_start %105, %104 {dfg_id = 146 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %107 = neura.reserve {dfg_id = 21 : i32} : !neura.data -// MAPPING-NEXT: %108 = "neura.data_mov"(%66) {dfg_id = 100 : i32, mapping_locs = [{id = 290 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 290 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 290 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 290 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 290 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %108 = "neura.data_mov"(%66) {dfg_id = 100 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 4 : i32}, {id = 297 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 297 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}, {id = 297 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 297 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 297 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 297 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %109 = neura.phi_start %108, %107 {dfg_id = 116 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %110 = neura.reserve {dfg_id = 22 : i32} : !neura.data // MAPPING-NEXT: %111 = "neura.data_mov"(%51) {dfg_id = 140 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data @@ -169,7 +169,7 @@ // MAPPING-NEXT: %143 = "neura.data_mov"(%118) {dfg_id = 252 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %144 = "neura.mul"(%142, %143) {dfg_id = 324 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %145 = "neura.data_mov"(%137) {dfg_id = 330 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 192 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %146 = "neura.data_mov"(%144) {dfg_id = 328 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 193 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %146 = "neura.data_mov"(%144) {dfg_id = 328 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %147 = "neura.sub"(%145, %146) {dfg_id = 332 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %148 = "neura.data_mov"(%134) {dfg_id = 321 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 1000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %149 = "neura.data_mov"(%118) {dfg_id = 251 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data @@ -187,34 +187,34 @@ // MAPPING-NEXT: %161 = "neura.gep"(%160) <{operandSegmentSizes = array}> {dfg_id = 258 : i32, lhs_value = "%arg0", mapping_locs = [{id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %162 = "neura.data_mov"(%161) {dfg_id = 267 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 12000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %163 = "neura.load"(%162) {dfg_id = 275 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %164 = "neura.data_mov"(%163) {dfg_id = 289 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 24 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 29 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %165 = "neura.data_mov"(%147) {dfg_id = 336 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 17 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %166 = "neura.sub"(%164, %165) {dfg_id = 340 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %167 = "neura.data_mov"(%166) {dfg_id = 344 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %168 = "neura.data_mov"(%132) {dfg_id = 313 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 1003 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 1003 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 1003 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 1003 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 1003 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 1003 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%167, %168) {dfg_id = 348 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %169 = "neura.data_mov"(%163) {dfg_id = 288 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 41 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 45 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %170 = "neura.data_mov"(%147) {dfg_id = 335 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %171 = "neura.add"(%169, %170) {dfg_id = 339 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 343 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 266 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8003 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 8003 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 8003 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 8003 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 8003 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 8003 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 8003 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%172, %173) {dfg_id = 347 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %164 = "neura.data_mov"(%163) {dfg_id = 289 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 41 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 448 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %165 = "neura.data_mov"(%147) {dfg_id = 336 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 34 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %166 = "neura.sub"(%164, %165) {dfg_id = 340 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %167 = "neura.data_mov"(%166) {dfg_id = 344 : i32, mapping_locs = [{id = 45 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %168 = "neura.data_mov"(%132) {dfg_id = 313 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 2001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 2001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 2001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 2001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 2001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 2001 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 2001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 2001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%167, %168) {dfg_id = 348 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %169 = "neura.data_mov"(%163) {dfg_id = 288 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 24 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 29 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %170 = "neura.data_mov"(%147) {dfg_id = 335 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 160 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %171 = "neura.add"(%169, %170) {dfg_id = 339 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 343 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 266 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8008 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 8008 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%172, %173) {dfg_id = 347 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %174 = "neura.data_mov"(%159) {dfg_id = 247 : i32, mapping_locs = [{id = 416 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %175 = "neura.gep"(%174) <{operandSegmentSizes = array}> {dfg_id = 257 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %176 = "neura.data_mov"(%175) {dfg_id = 265 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %177 = "neura.load"(%176) {dfg_id = 274 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %178 = "neura.data_mov"(%177) {dfg_id = 287 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 40 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 39 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 25 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %179 = "neura.data_mov"(%156) {dfg_id = 334 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 17 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 13 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %178 = "neura.data_mov"(%177) {dfg_id = 287 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 25 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 4000 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 4000 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %179 = "neura.data_mov"(%156) {dfg_id = 334 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 1 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %180 = "neura.sub"(%178, %179) {dfg_id = 338 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 342 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %182 = "neura.data_mov"(%139) {dfg_id = 311 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 15 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 1 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 1 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 1 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 1 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%181, %182) {dfg_id = 346 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 342 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %182 = "neura.data_mov"(%139) {dfg_id = 311 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 304 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 27 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 8002 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 8002 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 8002 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 8002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%181, %182) {dfg_id = 346 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %183 = "neura.data_mov"(%177) {dfg_id = 286 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 25 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 11 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %184 = "neura.data_mov"(%156) {dfg_id = 333 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %185 = "neura.add"(%183, %184) {dfg_id = 337 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %186 = "neura.data_mov"(%185) {dfg_id = 341 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %187 = "neura.data_mov"(%175) {dfg_id = 264 : i32, mapping_locs = [{id = 41 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 45 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 33 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 19 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 5 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%186, %187) {dfg_id = 345 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %186 = "neura.data_mov"(%185) {dfg_id = 341 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %187 = "neura.data_mov"(%175) {dfg_id = 264 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 29 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 15 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 1000 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 2 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%186, %187) {dfg_id = 345 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %188 = "neura.data_mov"(%127) {dfg_id = 132 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %189 = "neura.add"(%188) {dfg_id = 145 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %190 = "neura.data_mov"(%189) {dfg_id = 153 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data @@ -222,72 +222,72 @@ // MAPPING-NEXT: %192 = "neura.icmp"(%190, %191) <{cmpType = "eq"}> {dfg_id = 167 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %193 = "neura.data_mov"(%192) {dfg_id = 179 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %194 = "neura.not"(%193) {dfg_id = 191 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %195 = "neura.data_mov"(%189) {dfg_id = 152 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 27 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 8000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %196 = "neura.data_mov"(%194) {dfg_id = 216 : i32, mapping_locs = [{id = 8001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %195 = "neura.data_mov"(%189) {dfg_id = 152 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %196 = "neura.data_mov"(%194) {dfg_id = 216 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %197 = neura.grant_predicate %195, %196 {dfg_id = 230 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %197 -> %125 {dfg_id = 245 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 291 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 291 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 291 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 291 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 291 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 291 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 291 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 291 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 291 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 291 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 291 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 291 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 291 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 291 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %198 = "neura.data_mov"(%124) {dfg_id = 268 : i32, mapping_locs = [{id = 199 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 10 : i32}, {id = 199 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 11 : i32}, {id = 199 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 12 : i32}, {id = 199 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 13 : i32}, {id = 199 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 14 : i32}, {id = 199 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 15 : i32}, {id = 199 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 16 : i32}, {id = 199 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 17 : i32}, {id = 199 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 18 : i32}, {id = 199 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 19 : i32}, {id = 199 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 20 : i32}, {id = 199 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %199 = "neura.data_mov"(%194) {dfg_id = 215 : i32, mapping_locs = [{id = 8014 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 14 : i32, resource = "register", time_step = 12 : i32}, {id = 8012 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 13 : i32}, {id = 8006 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 14 : i32}, {id = 26 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 12001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 12000 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 38 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 41 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 45 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %200 = neura.grant_predicate %198, %199 {dfg_id = 276 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %200 -> %122 {dfg_id = 290 : i32, mapping_locs = [{id = 196 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 22 : i32}, {id = 196 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 23 : i32}, {id = 196 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 24 : i32}, {id = 196 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 25 : i32}, {id = 196 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 26 : i32}, {id = 196 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 27 : i32}, {id = 196 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %201 = "neura.data_mov"(%121) {dfg_id = 253 : i32, mapping_locs = [{id = 23 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 352 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 352 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 352 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 352 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 352 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 352 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %202 = "neura.data_mov"(%194) {dfg_id = 214 : i32, mapping_locs = [{id = 8013 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 13 : i32, resource = "register", time_step = 12 : i32}, {id = 8010 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 8005 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 14 : i32}, {id = 8002 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 8001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 8001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 24 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 28 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %203 = neura.grant_predicate %201, %202 {dfg_id = 261 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 3 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %203 -> %119 {dfg_id = 271 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 225 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 225 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 225 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 225 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}, {id = 225 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 26 : i32}, {id = 225 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 27 : i32}, {id = 225 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 28 : i32}, {id = 225 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 29 : i32}, {id = 225 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 30 : i32}, {id = 225 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 31 : i32}, {id = 225 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %204 = "neura.data_mov"(%118) {dfg_id = 250 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 1002 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 1002 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 1002 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %205 = "neura.data_mov"(%194) {dfg_id = 213 : i32, mapping_locs = [{id = 8012 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 12 : i32}, {id = 8009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 8003 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 8001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 24 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 29 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 15 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %206 = neura.grant_predicate %204, %205 {dfg_id = 260 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %206 -> %116 {dfg_id = 270 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 2001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 2001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 2001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 2001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 2001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}, {id = 2001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 26 : i32}, {id = 2001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 27 : i32}, {id = 2001 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 28 : i32}, {id = 2001 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 29 : i32}, {id = 2001 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 30 : i32}, {id = 2001 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 31 : i32}, {id = 2001 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %207 = "neura.data_mov"(%115) {dfg_id = 217 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 8008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 8008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 8008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8008 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 8008 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %208 = "neura.data_mov"(%194) {dfg_id = 212 : i32, mapping_locs = [{id = 8011 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 12 : i32}, {id = 8011 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 13 : i32}, {id = 8011 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 14 : i32}, {id = 8011 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 15 : i32}, {id = 8011 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 16 : i32}, {id = 8011 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 17 : i32}, {id = 8011 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = neura.grant_predicate %207, %208 {dfg_id = 231 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %209 -> %113 {dfg_id = 246 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 294 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 20 : i32}, {id = 294 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 21 : i32}, {id = 294 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 22 : i32}, {id = 294 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 23 : i32}, {id = 294 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 24 : i32}, {id = 294 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 25 : i32}, {id = 294 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 26 : i32}, {id = 294 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 27 : i32}, {id = 294 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 28 : i32}, {id = 294 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 29 : i32}, {id = 294 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 30 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %210 = "neura.data_mov"(%112) {dfg_id = 157 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %197 -> %125 {dfg_id = 245 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 298 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 298 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 298 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 298 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 298 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 298 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 298 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 298 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 298 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 298 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 298 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 298 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 298 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 298 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %198 = "neura.data_mov"(%124) {dfg_id = 268 : i32, mapping_locs = [{id = 204 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 10 : i32}, {id = 204 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 11 : i32}, {id = 204 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 12 : i32}, {id = 204 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 13 : i32}, {id = 204 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 14 : i32}, {id = 204 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 15 : i32}, {id = 204 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 16 : i32}, {id = 204 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 17 : i32}, {id = 204 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 18 : i32}, {id = 204 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 19 : i32}, {id = 204 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %199 = "neura.data_mov"(%194) {dfg_id = 215 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 33 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 209 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 209 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}, {id = 209 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}, {id = 209 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 209 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 209 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %200 = neura.grant_predicate %198, %199 {dfg_id = 276 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %200 -> %122 {dfg_id = 290 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 195 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 195 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 195 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 195 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 195 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 195 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}, {id = 195 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %201 = "neura.data_mov"(%121) {dfg_id = 253 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 224 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 224 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %202 = "neura.data_mov"(%194) {dfg_id = 214 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 32 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 36 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 232 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %203 = neura.grant_predicate %201, %202 {dfg_id = 261 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %203 -> %119 {dfg_id = 271 : i32, mapping_locs = [{id = 225 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 225 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 225 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 225 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 225 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 225 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 225 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 225 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 225 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}, {id = 225 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 26 : i32}, {id = 225 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 27 : i32}, {id = 225 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 28 : i32}, {id = 225 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 29 : i32}, {id = 225 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 30 : i32}, {id = 225 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 31 : i32}, {id = 225 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %204 = "neura.data_mov"(%118) {dfg_id = 250 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 2000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 2000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %205 = "neura.data_mov"(%194) {dfg_id = 213 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 33 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 19 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 2008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %206 = neura.grant_predicate %204, %205 {dfg_id = 260 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %206 -> %116 {dfg_id = 270 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 2008 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 2008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 2008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 2008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 2008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}, {id = 2008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 29 : i32}, {id = 2008 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 30 : i32}, {id = 2008 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 31 : i32}, {id = 2008 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %207 = "neura.data_mov"(%115) {dfg_id = 217 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 424 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 424 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 424 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 424 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 424 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %208 = "neura.data_mov"(%194) {dfg_id = 212 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 30 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 417 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 417 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 417 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 417 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = neura.grant_predicate %207, %208 {dfg_id = 231 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %209 -> %113 {dfg_id = 246 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 299 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 19 : i32}, {id = 299 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 20 : i32}, {id = 299 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 21 : i32}, {id = 299 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 22 : i32}, {id = 299 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 23 : i32}, {id = 299 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 24 : i32}, {id = 299 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 25 : i32}, {id = 299 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 299 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}, {id = 299 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 28 : i32}, {id = 299 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 29 : i32}, {id = 299 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 30 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %210 = "neura.data_mov"(%112) {dfg_id = 157 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %211 = "neura.data_mov"(%194) {dfg_id = 211 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %212 = neura.grant_predicate %210, %211 {dfg_id = 229 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %212 -> %110 {dfg_id = 244 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 4001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 4001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 4001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 4001 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 26 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 27 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %213 = "neura.data_mov"(%109) {dfg_id = 130 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 418 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 418 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 418 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 418 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 418 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 418 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %214 = "neura.data_mov"(%194) {dfg_id = 210 : i32, mapping_locs = [{id = 8010 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 8006 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 13 : i32}, {id = 26 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 12001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 12000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 38 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %215 = neura.grant_predicate %213, %214 {dfg_id = 228 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %215 -> %107 {dfg_id = 243 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 293 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 19 : i32}, {id = 293 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 20 : i32}, {id = 293 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 21 : i32}, {id = 293 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 22 : i32}, {id = 293 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 23 : i32}, {id = 293 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 24 : i32}, {id = 293 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 25 : i32}, {id = 293 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 26 : i32}, {id = 293 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 27 : i32}, {id = 293 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 28 : i32}, {id = 293 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %216 = "neura.data_mov"(%106) {dfg_id = 155 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 4002 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 4002 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 4002 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 4002 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %217 = "neura.data_mov"(%194) {dfg_id = 209 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 8005 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 13 : i32}, {id = 8001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 25 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 4000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 4000 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 4000 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %218 = neura.grant_predicate %216, %217 {dfg_id = 227 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %218 -> %104 {dfg_id = 242 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 165 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 21 : i32}, {id = 165 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 22 : i32}, {id = 165 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 23 : i32}, {id = 165 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 24 : i32}, {id = 165 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 25 : i32}, {id = 165 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 26 : i32}, {id = 165 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 27 : i32}, {id = 165 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 28 : i32}, {id = 165 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 29 : i32}, {id = 165 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 30 : i32}, {id = 165 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %219 = "neura.data_mov"(%103) {dfg_id = 164 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 194 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 194 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 194 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 194 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %220 = "neura.data_mov"(%194) {dfg_id = 208 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 8003 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 25 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 10 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 14 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %221 = neura.grant_predicate %219, %220 {dfg_id = 226 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %221 -> %101 {dfg_id = 241 : i32, mapping_locs = [{id = 198 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 21 : i32}, {id = 198 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 22 : i32}, {id = 198 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 23 : i32}, {id = 198 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 24 : i32}, {id = 198 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 25 : i32}, {id = 198 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 26 : i32}, {id = 198 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 27 : i32}, {id = 198 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 28 : i32}, {id = 198 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 29 : i32}, {id = 198 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 30 : i32}, {id = 198 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 31 : i32}, {id = 198 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 32 : i32}, {id = 198 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 33 : i32}, {id = 198 : i32, index_per_ii = 15 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 34 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %222 = "neura.data_mov"(%100) {dfg_id = 160 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 12 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 8000 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %223 = "neura.data_mov"(%194) {dfg_id = 207 : i32, mapping_locs = [{id = 8007 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 12 : i32}, {id = 8007 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 13 : i32}, {id = 8007 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 14 : i32}, {id = 8007 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 15 : i32}, {id = 8007 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 16 : i32}, {id = 8007 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %224 = neura.grant_predicate %222, %223 {dfg_id = 225 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %224 -> %98 {dfg_id = 240 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 25 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 4005 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 20 : i32}, {id = 4005 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 21 : i32}, {id = 4005 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 22 : i32}, {id = 4005 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 23 : i32}, {id = 4005 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 24 : i32}, {id = 4005 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 25 : i32}, {id = 4005 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 26 : i32}, {id = 4005 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 27 : i32}, {id = 4005 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 28 : i32}, {id = 4005 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 29 : i32}, {id = 4005 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 30 : i32}, {id = 4005 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 31 : i32}, {id = 4005 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 32 : i32}, {id = 4005 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 33 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %225 = "neura.data_mov"(%97) {dfg_id = 139 : i32, mapping_locs = [{id = 164 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}, {id = 164 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}, {id = 164 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 18 : i32}, {id = 164 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %226 = "neura.data_mov"(%194) {dfg_id = 206 : i32, mapping_locs = [{id = 8006 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 12 : i32}, {id = 8001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 24 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 29 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 165 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 16 : i32}, {id = 165 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 17 : i32}, {id = 165 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 18 : i32}, {id = 165 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %212 -> %110 {dfg_id = 244 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 4008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 4008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 4008 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 4008 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %213 = "neura.data_mov"(%109) {dfg_id = 130 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 8016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 8016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 8016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 8016 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 8016 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 8016 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 8016 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %214 = "neura.data_mov"(%194) {dfg_id = 210 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 8009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 8009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 8009 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 8009 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 8009 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 8009 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %215 = neura.grant_predicate %213, %214 {dfg_id = 228 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %215 -> %107 {dfg_id = 243 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 305 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 305 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 305 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}, {id = 305 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 23 : i32}, {id = 305 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 24 : i32}, {id = 305 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 25 : i32}, {id = 305 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 26 : i32}, {id = 305 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 27 : i32}, {id = 305 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 28 : i32}, {id = 305 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %216 = "neura.data_mov"(%106) {dfg_id = 155 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 4001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 4001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 4001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %217 = "neura.data_mov"(%194) {dfg_id = 209 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 4016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 4016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 4016 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 4016 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 4016 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %218 = neura.grant_predicate %216, %217 {dfg_id = 227 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %218 -> %104 {dfg_id = 242 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 172 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 19 : i32}, {id = 172 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 20 : i32}, {id = 172 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 21 : i32}, {id = 172 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 22 : i32}, {id = 172 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 23 : i32}, {id = 172 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 24 : i32}, {id = 172 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 25 : i32}, {id = 172 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 26 : i32}, {id = 172 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 27 : i32}, {id = 172 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 28 : i32}, {id = 172 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 29 : i32}, {id = 172 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 30 : i32}, {id = 172 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %219 = "neura.data_mov"(%103) {dfg_id = 164 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %220 = "neura.data_mov"(%194) {dfg_id = 208 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 33 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 202 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 202 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 202 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 202 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 202 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %221 = neura.grant_predicate %219, %220 {dfg_id = 226 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %221 -> %101 {dfg_id = 241 : i32, mapping_locs = [{id = 203 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 20 : i32}, {id = 203 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 21 : i32}, {id = 203 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 22 : i32}, {id = 203 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 23 : i32}, {id = 203 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 24 : i32}, {id = 203 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 25 : i32}, {id = 203 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 203 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}, {id = 203 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 28 : i32}, {id = 203 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 29 : i32}, {id = 203 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 30 : i32}, {id = 203 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 31 : i32}, {id = 203 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 32 : i32}, {id = 203 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 33 : i32}, {id = 203 : i32, index_per_ii = 15 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 34 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %222 = "neura.data_mov"(%100) {dfg_id = 160 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %223 = "neura.data_mov"(%194) {dfg_id = 207 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 4000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 4000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 4000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %224 = neura.grant_predicate %222, %223 {dfg_id = 225 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %224 -> %98 {dfg_id = 240 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 177 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 177 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 177 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 177 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 177 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}, {id = 177 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 23 : i32}, {id = 177 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 24 : i32}, {id = 177 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 25 : i32}, {id = 177 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 26 : i32}, {id = 177 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 27 : i32}, {id = 177 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 28 : i32}, {id = 177 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 29 : i32}, {id = 177 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 30 : i32}, {id = 177 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 31 : i32}, {id = 177 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 32 : i32}, {id = 177 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 33 : i32}, {id = 177 : i32, index_per_ii = 15 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 34 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %225 = "neura.data_mov"(%97) {dfg_id = 139 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 163 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 163 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 163 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 163 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %226 = "neura.data_mov"(%194) {dfg_id = 206 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 29 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 171 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 14 : i32}, {id = 171 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 15 : i32}, {id = 171 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 16 : i32}, {id = 171 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 17 : i32}, {id = 171 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 18 : i32}, {id = 171 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 224 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %227 -> %95 {dfg_id = 239 : i32, mapping_locs = [{id = 164 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 20 : i32}, {id = 164 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 21 : i32}, {id = 164 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 22 : i32}, {id = 164 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 23 : i32}, {id = 164 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 24 : i32}, {id = 164 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 25 : i32}, {id = 164 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 26 : i32}, {id = 164 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 27 : i32}, {id = 164 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 28 : i32}, {id = 164 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 29 : i32}, {id = 164 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 30 : i32}, {id = 164 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 31 : i32}, {id = 164 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 32 : i32}, {id = 164 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 33 : i32}, {id = 164 : i32, index_per_ii = 15 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 34 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %228 = "neura.data_mov"(%94) {dfg_id = 136 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 448 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 448 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 448 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %229 = "neura.data_mov"(%194) {dfg_id = 205 : i32, mapping_locs = [{id = 8005 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 12 : i32}, {id = 26 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 38 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 41 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 449 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %230 = neura.grant_predicate %228, %229 {dfg_id = 223 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %230 -> %92 {dfg_id = 238 : i32, mapping_locs = [{id = 45 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 323 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 323 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 323 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 323 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 323 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 323 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 323 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 323 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 323 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 323 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}, {id = 323 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 28 : i32}, {id = 323 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 29 : i32}, {id = 323 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 30 : i32}, {id = 323 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %227 -> %95 {dfg_id = 239 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 163 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 163 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 163 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 163 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 163 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 163 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 163 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}, {id = 163 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 28 : i32}, {id = 163 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 29 : i32}, {id = 163 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 30 : i32}, {id = 163 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 31 : i32}, {id = 163 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 32 : i32}, {id = 163 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 33 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %228 = "neura.data_mov"(%94) {dfg_id = 136 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 8001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 8001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %229 = "neura.data_mov"(%194) {dfg_id = 205 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 8009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 8009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 8009 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 8009 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 8009 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %230 = neura.grant_predicate %228, %229 {dfg_id = 223 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %230 -> %92 {dfg_id = 238 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 28 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 330 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 330 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 330 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 330 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 330 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 330 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 330 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 330 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}, {id = 330 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 28 : i32}, {id = 330 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 29 : i32}, {id = 330 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 30 : i32}, {id = 330 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %231 = "neura.data_mov"(%109) {dfg_id = 129 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %232 = "neura.data_mov"(%192) {dfg_id = 178 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %232 = "neura.data_mov"(%192) {dfg_id = 178 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %233 = neura.grant_predicate %231, %232 {dfg_id = 190 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %234 = "neura.data_mov"(%106) {dfg_id = 154 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %235 = "neura.data_mov"(%192) {dfg_id = 177 : i32, mapping_locs = [{id = 8001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 29 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %235 = "neura.data_mov"(%192) {dfg_id = 177 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %236 = neura.grant_predicate %234, %235 {dfg_id = 189 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %237 = "neura.data_mov"(%103) {dfg_id = 163 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %238 = "neura.data_mov"(%192) {dfg_id = 176 : i32, mapping_locs = [{id = 8005 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 11 : i32}, {id = 8003 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 25 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 10 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 16 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 28 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %239 = neura.grant_predicate %237, %238 {dfg_id = 188 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %240 = "neura.data_mov"(%100) {dfg_id = 159 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %241 = "neura.data_mov"(%192) {dfg_id = 175 : i32, mapping_locs = [{id = 8004 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 8004 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 8004 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 8004 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 8004 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %242 = neura.grant_predicate %240, %241 {dfg_id = 187 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %243 = "neura.data_mov"(%97) {dfg_id = 138 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %244 = "neura.data_mov"(%192) {dfg_id = 174 : i32, mapping_locs = [{id = 8003 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 26 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 38 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 42 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 289 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %245 = neura.grant_predicate %243, %244 {dfg_id = 186 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %246 = "neura.data_mov"(%94) {dfg_id = 135 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %247 = "neura.data_mov"(%192) {dfg_id = 173 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 38 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 41 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 45 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %248 = neura.grant_predicate %246, %247 {dfg_id = 185 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %237 = "neura.data_mov"(%103) {dfg_id = 163 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 16 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %238 = "neura.data_mov"(%192) {dfg_id = 176 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 289 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 289 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %239 = neura.grant_predicate %237, %238 {dfg_id = 188 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %240 = "neura.data_mov"(%100) {dfg_id = 159 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %241 = "neura.data_mov"(%192) {dfg_id = 175 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %242 = neura.grant_predicate %240, %241 {dfg_id = 187 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %243 = "neura.data_mov"(%97) {dfg_id = 138 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %244 = "neura.data_mov"(%192) {dfg_id = 174 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 4002 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %245 = neura.grant_predicate %243, %244 {dfg_id = 186 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %246 = "neura.data_mov"(%94) {dfg_id = 135 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %247 = "neura.data_mov"(%192) {dfg_id = 173 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 28 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %248 = neura.grant_predicate %246, %247 {dfg_id = 185 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %249 = "neura.data_mov"(%112) {dfg_id = 156 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %250 = "neura.data_mov"(%192) {dfg_id = 172 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %251 = neura.grant_predicate %249, %250 {dfg_id = 184 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data @@ -301,78 +301,26 @@ // MAPPING-NEXT: %259 = "neura.data_mov"(%253) {dfg_id = 236 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %260 = "neura.data_mov"(%258) {dfg_id = 285 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %261 = neura.grant_predicate %259, %260 {dfg_id = 300 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %261 -> %64 {dfg_id = 310 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 290 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 290 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 290 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 290 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 290 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %262 = "neura.data_mov"(%239) {dfg_id = 201 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 27 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %263 = "neura.data_mov"(%258) {dfg_id = 284 : i32, mapping_locs = [{id = 295 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 16 : i32}, {id = 289 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 288 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %264 = neura.grant_predicate %262, %263 {dfg_id = 299 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %264 -> %61 {dfg_id = 309 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 28 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 194 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 194 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}, {id = 194 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 25 : i32}, {id = 194 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 26 : i32}, {id = 194 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %265 = "neura.data_mov"(%242) {dfg_id = 200 : i32, mapping_locs = [{id = 8002 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 8002 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 8002 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 8002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 8002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %266 = "neura.data_mov"(%258) {dfg_id = 283 : i32, mapping_locs = [{id = 294 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 16 : i32}, {id = 27 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 8001 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 8001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 8001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %267 = neura.grant_predicate %265, %266 {dfg_id = 298 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %267 -> %58 {dfg_id = 308 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 166 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %268 = "neura.data_mov"(%245) {dfg_id = 199 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 416 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 416 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %269 = "neura.data_mov"(%258) {dfg_id = 282 : i32, mapping_locs = [{id = 293 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 16 : i32}, {id = 288 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 30 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 417 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %270 = neura.grant_predicate %268, %269 {dfg_id = 297 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %270 -> %55 {dfg_id = 307 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 42 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 29 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}, {id = 160 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %271 = "neura.data_mov"(%248) {dfg_id = 198 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 290 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 290 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %272 = "neura.data_mov"(%258) {dfg_id = 281 : i32, mapping_locs = [{id = 292 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}, {id = 292 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %273 = neura.grant_predicate %271, %272 {dfg_id = 296 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %273 -> %52 {dfg_id = 306 : i32, mapping_locs = [{id = 292 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 18 : i32}, {id = 292 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 19 : i32}, {id = 292 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 20 : i32}, {id = 292 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 21 : i32}, {id = 292 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 22 : i32}, {id = 292 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 23 : i32}, {id = 292 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 24 : i32}, {id = 292 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 25 : i32}, {id = 292 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %261 -> %64 {dfg_id = 310 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 297 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 297 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 297 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 297 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 297 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %262 = "neura.data_mov"(%239) {dfg_id = 201 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %263 = "neura.data_mov"(%258) {dfg_id = 284 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 416 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 416 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %264 = neura.grant_predicate %262, %263 {dfg_id = 299 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %264 -> %61 {dfg_id = 309 : i32, mapping_locs = [{id = 41 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 45 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 201 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 201 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 201 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 201 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 201 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}, {id = 201 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %265 = "neura.data_mov"(%242) {dfg_id = 200 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 1000 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %266 = "neura.data_mov"(%258) {dfg_id = 283 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 15 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %267 = neura.grant_predicate %265, %266 {dfg_id = 298 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %267 -> %58 {dfg_id = 308 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 169 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 169 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 169 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 169 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %268 = "neura.data_mov"(%245) {dfg_id = 199 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 4002 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 4002 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %269 = "neura.data_mov"(%258) {dfg_id = 282 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 13 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 4016 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 4016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %270 = neura.grant_predicate %268, %269 {dfg_id = 297 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %270 -> %55 {dfg_id = 307 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 184 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 184 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 184 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 184 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %271 = "neura.data_mov"(%248) {dfg_id = 198 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %272 = "neura.data_mov"(%258) {dfg_id = 281 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %273 = neura.grant_predicate %271, %272 {dfg_id = 296 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %273 -> %52 {dfg_id = 306 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 304 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 304 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 304 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 304 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 304 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 304 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 304 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %274 = "neura.data_mov"(%251) {dfg_id = 196 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 8000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 8000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 8000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 8000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %275 = "neura.data_mov"(%258) {dfg_id = 280 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %276 = neura.grant_predicate %274, %275 {dfg_id = 295 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %276 -> %49 {dfg_id = 305 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 4004 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 18 : i32}, {id = 4004 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 19 : i32}, {id = 4004 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 20 : i32}, {id = 4004 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 21 : i32}, {id = 4004 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 22 : i32}, {id = 4004 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 23 : i32}, {id = 4004 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 24 : i32}, {id = 4004 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 25 : i32}, {id = 4004 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 26 : i32}, {id = 4004 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %277 = "neura.data_mov"(%236) {dfg_id = 202 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 162 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 162 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 162 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %278 = "neura.data_mov"(%258) {dfg_id = 279 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 160 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %279 = neura.grant_predicate %277, %278 {dfg_id = 294 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %279 -> %46 {dfg_id = 304 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 163 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 163 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 163 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 163 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 163 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 163 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 163 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 163 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 163 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}, {id = 163 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 28 : i32}, {id = 163 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 29 : i32}, {id = 163 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 30 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %280 = "neura.data_mov"(%248) {dfg_id = 197 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %281 = "neura.data_mov"(%256) {dfg_id = 262 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %282 = neura.grant_predicate %280, %281 {dfg_id = 272 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %283 = "neura.data_mov"(%37) {dfg_id = 99 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 288 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 28 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %284 = "neura.data_mov"(%282) {dfg_id = 278 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %285 = "neura.phi"(%283, %284) {dfg_id = 293 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %286 = "neura.data_mov"(%12) {dfg_id = 45 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %287 = "neura.shl"(%286) {dfg_id = 53 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %288 = "neura.data_mov"(%15) {dfg_id = 42 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %289 = "neura.div"(%288) {dfg_id = 51 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 2 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %290 = "neura.data_mov"(%18) {dfg_id = 40 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %291 = "neura.shl"(%290) {dfg_id = 50 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 3 : i32, y = 1 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %292 = "neura.data_mov"(%291) {dfg_id = 56 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %293 = "neura.or"(%292) {dfg_id = 65 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 1 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %294 = "neura.data_mov"(%9) {dfg_id = 39 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %295 = "neura.add"(%294) {dfg_id = 49 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %296 = "neura.data_mov"(%295) {dfg_id = 55 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %297 = "neura.icmp"(%296) <{cmpType = "eq"}> {dfg_id = 64 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 8 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %298 = "neura.data_mov"(%297) {dfg_id = 73 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 160 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %299 = "neura.not"(%298) {dfg_id = 84 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %300 = "neura.data_mov"(%293) {dfg_id = 74 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 197 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 9 : i32}, {id = 197 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 10 : i32}, {id = 197 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 11 : i32}, {id = 197 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 12 : i32}, {id = 197 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 13 : i32}, {id = 197 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 14 : i32}, {id = 197 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 15 : i32}, {id = 197 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 16 : i32}, {id = 197 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 17 : i32}, {id = 197 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 18 : i32}, {id = 197 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %301 = "neura.data_mov"(%299) {dfg_id = 98 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 10 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %302 = neura.grant_predicate %300, %301 {dfg_id = 115 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %302 -> %16 {dfg_id = 128 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 224 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}, {id = 224 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %303 = "neura.data_mov"(%289) {dfg_id = 57 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 15 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 1001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 1001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 1001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 1001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 1001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %304 = "neura.data_mov"(%299) {dfg_id = 97 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %305 = neura.grant_predicate %303, %304 {dfg_id = 114 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %305 -> %13 {dfg_id = 127 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %306 = "neura.data_mov"(%287) {dfg_id = 63 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 196 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 10 : i32}, {id = 196 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 196 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 196 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 196 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 196 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}, {id = 196 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}, {id = 196 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}, {id = 196 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %307 = "neura.data_mov"(%299) {dfg_id = 96 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 14 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %308 = neura.grant_predicate %306, %307 {dfg_id = 113 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %308 -> %10 {dfg_id = 126 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 322 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 322 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 322 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 322 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 322 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}, {id = 322 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 25 : i32}, {id = 322 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %309 = "neura.data_mov"(%295) {dfg_id = 54 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 195 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 195 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 195 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %310 = "neura.data_mov"(%299) {dfg_id = 95 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %311 = neura.grant_predicate %309, %310 {dfg_id = 112 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %311 -> %7 {dfg_id = 125 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 195 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 195 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 195 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 195 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 195 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 195 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 195 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 195 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 195 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}, {id = 195 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 28 : i32}, {id = 195 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 29 : i32}, {id = 195 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 30 : i32}, {id = 195 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %312 = "neura.data_mov"(%285) {dfg_id = 303 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 353 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %313 = "neura.data_mov"(%299) {dfg_id = 94 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 28 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 32 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %314 = neura.grant_predicate %312, %313 {dfg_id = 315 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %314 -> %4 {dfg_id = 318 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %315 = "neura.data_mov"(%297) {dfg_id = 71 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 1000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %316 = "neura.data_mov"(%297) {dfg_id = 72 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 15 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %317 = neura.grant_predicate %315, %316 {dfg_id = 83 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %318 = "neura.data_mov"(%317) {dfg_id = 93 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %318 : !neura.data {dfg_id = 111 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} -// MAPPING-NEXT: neura.yield {dfg_id = 28 : i32} -// MAPPING-NEXT: } // YAML: array_config: @@ -386,372 +334,349 @@ // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "STORE" // YAML-NEXT: id: 345 -// YAML-NEXT: time_step: 20 +// YAML-NEXT: time_step: 19 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 342 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - index_per_ii: 18 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 337 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 3340002 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 346 -// YAML-NEXT: time_step: 21 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 298 +// YAML-NEXT: time_step: 19 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 13 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 317 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 15 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 311 +// YAML-NEXT: - opcode: "MUL" +// YAML-NEXT: id: 325 // YAML-NEXT: time_step: 15 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 17 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 3340001 +// YAML-NEXT: time_step: 17 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 18 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 337 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 2640003 // YAML-NEXT: time_step: 18 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 200 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 +// YAML-NEXT: - column: 2 // YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" +// YAML-NEXT: core_id: "2" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 260 -// YAML-NEXT: time_step: 19 +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 348 +// YAML-NEXT: time_step: 22 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 6 +// YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2640005 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: id: 290001 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 348 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: - index_per_ii: 12 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 57 -// YAML-NEXT: time_step: 5 +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 302 +// YAML-NEXT: time_step: 12 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg0" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 13 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 317 +// YAML-NEXT: id: 194 // YAML-NEXT: time_step: 13 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 14 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 313 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 234 // YAML-NEXT: time_step: 14 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3110002 +// YAML-NEXT: id: 3220001 // YAML-NEXT: time_step: 14 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 15 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 325 +// YAML-NEXT: id: 324 // YAML-NEXT: time_step: 15 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 16 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 250 +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 331 // YAML-NEXT: time_step: 16 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 71 +// YAML-NEXT: id: 213 // YAML-NEXT: time_step: 16 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 17 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 83 +// YAML-NEXT: id: 260 // YAML-NEXT: time_step: 17 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3330001 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 114 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 +// YAML-NEXT: - column: 3 // YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" +// YAML-NEXT: core_id: "3" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 270 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 290001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 +// YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 302 -// YAML-NEXT: time_step: 12 +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "#0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 13 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 194 +// YAML-NEXT: id: 195 // YAML-NEXT: time_step: 13 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3130000 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 14 // YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 316 +// YAML-NEXT: time_step: 14 // ASM: # Compiled II: 19 // ASM: PE(0,0): // ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [EAST, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$1] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: STORE, [$0], [EAST, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: ADD, [NORTH, RED], [EAST, RED] -> [$0] (t=18, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=18, inv_iters=0) // ASM-NEXT: } (idx_per_ii=18) // ASM: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [NORTH, RED] -> [EAST, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [NORTH, RED] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: STORE, [NORTH, RED], [$3] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { // ASM-NEXT: LOAD, [EAST, RED] -> [EAST, RED], [$0] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { // ASM-NEXT: MUL, [$0], [EAST, RED] -> [EAST, RED] (t=15, inv_iters=0) // ASM-NEXT: } (idx_per_ii=15) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [EAST, RED] (t=17, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=17, inv_iters=0) // ASM-NEXT: } (idx_per_ii=17) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [NORTH, RED] -> [NORTH, RED] (t=18, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=18, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=18, inv_iters=0) // ASM-NEXT: } (idx_per_ii=18) // ASM: PE(2,0): // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$1] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: STORE, [NORTH, RED], [$1] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: GEP, [NORTH, RED] -> [WEST, RED], [$0] (t=12, inv_iters=0) +// ASM-NEXT: GEP, [arg0], [NORTH, RED] -> [WEST, RED], [$1] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { // ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [$0], [WEST, RED], [$1] (t=14, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [$0], [WEST, RED] (t=14, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=14, inv_iters=0) // ASM-NEXT: } (idx_per_ii=14) // ASM-NEXT: { // ASM-NEXT: MUL, [EAST, RED], [$0] -> [NORTH, RED] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$1] -> [WEST, RED] (t=15, inv_iters=0) // ASM-NEXT: } (idx_per_ii=15) // ASM-NEXT: { -// ASM-NEXT: ADD, [EAST, RED], [WEST, RED] -> [NORTH, RED], [WEST, RED] (t=16, inv_iters=0) +// ASM-NEXT: ADD, [EAST, RED], [WEST, RED] -> [WEST, RED] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=16, inv_iters=0) // ASM-NEXT: } (idx_per_ii=16) // ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [WEST, RED] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=18, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=18) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$8] (t=17, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=17) // ASM: PE(3,0): // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED], [NORTH, RED] (t=5, inv_iters=0) @@ -767,84 +692,78 @@ // ASM-NEXT: } (idx_per_ii=15) // ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: SUB, [NORTH, RED], [EAST, RED] -> [SOUTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: SUB, [$0], [SOUTH, RED] -> [NORTH, RED] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$0] -> [EAST, RED] (t=20, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$5] (t=20, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$2], [$16] -> [EAST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=3, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [EAST, RED] (t=22, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { // ASM-NEXT: ZEXT, [$0] -> [$0] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$4] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$9] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$1] -> [NORTH, RED], [$1], [$0] (t=10, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [NORTH, RED], [$0] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [NORTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$2] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [NORTH, RED] -> [$1] (t=13, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$8] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) // ASM-NEXT: { -// ASM-NEXT: NOT, [$2] -> [NORTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=14, inv_iters=0) +// ASM-NEXT: NOT, [$1] -> [NORTH, RED] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=14, inv_iters=0) // ASM-NEXT: } (idx_per_ii=14) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$3], [$5] -> [$0], [NORTH, RED] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=16, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$2] -> [$2] (t=16, inv_iters=0) // ASM-NEXT: } (idx_per_ii=16) // ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [EAST, RED] (t=17, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=17, inv_iters=0) // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=17, inv_iters=0) // ASM-NEXT: } (idx_per_ii=17) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [EAST, RED] (t=18, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$4] (t=18, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$16] -> [EAST, RED] (t=18, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=18, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$9] (t=18, inv_iters=0) // ASM-NEXT: } (idx_per_ii=18) // ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: SUB, [NORTH, RED], [EAST, RED] -> [SOUTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=19, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: ADD, [NORTH, RED], [$0] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$12] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$4], [$5] -> [$4] (t=20, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$3], [$11] -> [$3] (t=20, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$9] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [NORTH, RED], [#0] -> [EAST, RED], [$0], [$2], [NORTH, RED], [WEST, RED] (t=2, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$5] (t=21, inv_iters=1) +// ASM-NEXT: ICMP_SGT, [NORTH, RED], [#0] -> [EAST, RED], [$8], [$16], [NORTH, RED], [WEST, RED] (t=2, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$24] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [$0], [WEST, RED], [$1] (t=3, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0], [WEST, RED], [$8] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: ZEXT, [$0] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=4, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$6] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$6] -> [NORTH, RED], [WEST, RED] (t=5, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$0] (t=24, inv_iters=1) +// ASM-NEXT: PHI_START, [$0], [$9] -> [NORTH, RED], [$1] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$0] -> [$0], [$1] (t=7, inv_iters=0) +// ASM-NEXT: PHI_START, [$8], [$24] -> [$0], [$9] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: ADD, [$0], [NORTH, RED] -> [$0] (t=8, inv_iters=0) @@ -853,110 +772,105 @@ // ASM-NEXT: ZEXT, [$0] -> [EAST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$2] -> [$0] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$16] -> [$0] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { // ASM-NEXT: ZEXT, [$0] -> [$0] (t=11, inv_iters=0) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$3] -> [$0] (t=12, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$10] -> [$0] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$5] -> [WEST, RED], [$0] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$12] -> [WEST, RED], [$0] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [NORTH, RED], [$2] (t=14, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED], [$2] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$11] (t=14, inv_iters=0) // ASM-NEXT: } (idx_per_ii=14) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [EAST, RED], [#8] -> [$0], [SOUTH, RED], [$3] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=15, inv_iters=0) +// ASM-NEXT: PHI_START, [$9], [$3] -> [$3], [WEST, RED] (t=15, inv_iters=0) // ASM-NEXT: } (idx_per_ii=15) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$4] -> [$4], [NORTH, RED] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$5] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$3] -> [SOUTH, RED] (t=16, inv_iters=0) +// ASM-NEXT: PHI_START, [$1], [$17] -> [WEST, RED], [$0] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=16, inv_iters=0) // ASM-NEXT: } (idx_per_ii=16) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [WEST, RED], [SOUTH, RED], [$1], [EAST, RED], [NORTH, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=17, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=17, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=17, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=17, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=17, inv_iters=0) // ASM-NEXT: } (idx_per_ii=17) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$0] -> [$3] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=18, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$2], [$8] -> [$10] (t=18, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=18, inv_iters=0) // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$1] -> [EAST, RED] (t=18, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$17] (t=18, inv_iters=0) // ASM-NEXT: } (idx_per_ii=18) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$4], [WEST, RED] -> [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$9], [$16] -> [EAST, RED] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$5], [WEST, RED] -> [EAST, RED] (t=20, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$10] -> [$11] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$1] -> [$6] (t=21, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$12], [$17] -> [$3] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$7], [NORTH, RED] -> [$4] (t=22, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$9] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$2] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: SEXT, [$0] -> [$0] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$2] -> [NORTH, RED], [$2] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$5] (t=9, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$9] -> [NORTH, RED], [$1] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$9] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$4] -> [$0], [$7] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$4] (t=10, inv_iters=0) +// ASM-NEXT: PHI_START, [WEST, RED], [$3] -> [$0], [$12] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { // ASM-NEXT: ADD, [NORTH, RED], [$0] -> [SOUTH, RED], [$0] (t=11, inv_iters=0) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: GEP, [$0] -> [EAST, RED], [WEST, RED] (t=12, inv_iters=0) +// ASM-NEXT: GEP, [arg1], [$0] -> [EAST, RED], [WEST, RED] (t=12, inv_iters=0) // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$3] -> [$0] (t=13, inv_iters=0) +// ASM-NEXT: PHI_START, [$8], [$2] -> [$0] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [WEST, RED], [$3] (t=14, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [NORTH, RED], [$2] (t=14, inv_iters=0) // ASM-NEXT: } (idx_per_ii=14) // ASM-NEXT: { // ASM-NEXT: MUL, [SOUTH, RED], [EAST, RED] -> [$0] (t=15, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$17] (t=15, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=15, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$10] (t=15, inv_iters=0) // ASM-NEXT: } (idx_per_ii=15) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$2], [$6] -> [$2], [NORTH, RED] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=16, inv_iters=0) +// ASM-NEXT: PHI_START, [$1], [$11] -> [$1], [WEST, RED] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=16, inv_iters=0) // ASM-NEXT: } (idx_per_ii=16) // ASM-NEXT: { -// ASM-NEXT: SUB, [$0], [$1] -> [$0], [NORTH, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=17, inv_iters=0) +// ASM-NEXT: SUB, [$0], [$8] -> [NORTH, RED], [WEST, RED] (t=17, inv_iters=0) // ASM-NEXT: } (idx_per_ii=17) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$3], [WEST, RED] -> [$3] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=18, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$2], [NORTH, RED] -> [$2] (t=18, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=18, inv_iters=0) // ASM-NEXT: } (idx_per_ii=18) // ASM: PE(3,1): // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$0] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$1] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$0] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [WEST, RED], [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) @@ -968,3 +882,36 @@ // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [WEST, RED], [SOUTH, RED], [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$1] (t=17, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=17) +// ASM: PE(0,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$16], [$9] -> [EAST, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: STORE, [SOUTH, RED], [$2] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: STORE, [SOUTH, RED], [$8] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [EAST, RED], [SOUTH, RED] -> [$0], [EAST, RED], [SOUTH, RED] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$0], [EAST, RED], [SOUTH, RED], [$9] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=12, inv_iters=0) diff --git a/test/e2e/fir/fir_kernel.mlir b/test/e2e/fir/fir_kernel.mlir index 33bcefc1..34050713 100644 --- a/test/e2e/fir/fir_kernel.mlir +++ b/test/e2e/fir/fir_kernel.mlir @@ -25,7 +25,7 @@ // RUN: FileCheck %s --input-file=%t-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=%t-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data @@ -483,7 +483,7 @@ // DOT-NEXT: compound = true; // DOT-NEXT: subgraph cluster_1 { // DOT-NEXT: v2 [label = " ", shape = plain]; -// DOT-NEXT: label = "builtin.module : ()\n\ndlti.dl_spec: #dlti.dl_spec (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = dense<0> : vector<4xi32>}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data, i1> // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data, i1> diff --git a/test/e2e/gemm/gemm_kernel.mlir b/test/e2e/gemm/gemm_kernel.mlir index 8f59cd9a..8ee07f87 100644 --- a/test/e2e/gemm/gemm_kernel.mlir +++ b/test/e2e/gemm/gemm_kernel.mlir @@ -22,7 +22,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // -// MAPPING: func.func @kernel_int(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: i32 {llvm.noundef}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 17 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 13 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel_int(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: i32 {llvm.noundef}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 13 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = "%arg1"}> {dfg_id = 2 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data @@ -44,15 +44,15 @@ // MAPPING-NEXT: %18 = "neura.and"(%16, %17) {dfg_id = 42 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %19 = "neura.data_mov"(%18) {dfg_id = 44 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %20 = "neura.grant_once"(%19) {dfg_id = 46 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = "neura.data_mov"(%18) {dfg_id = 43 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 2 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = "neura.data_mov"(%18) {dfg_id = 43 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %22 = "neura.not"(%21) {dfg_id = 45 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %23 = "neura.data_mov"(%22) {dfg_id = 47 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %24 = "neura.grant_once"(%23) {dfg_id = 53 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %25 = "neura.data_mov"(%0) {dfg_id = 27 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%20) {dfg_id = 52 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%20) {dfg_id = 52 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %27 = neura.grant_predicate %25, %26 {dfg_id = 58 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %28 = "neura.data_mov"(%4) {dfg_id = 31 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%20) {dfg_id = 51 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 24 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 28 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%20) {dfg_id = 51 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 57 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %31 = "neura.data_mov"(%2) {dfg_id = 29 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %32 = "neura.data_mov"(%20) {dfg_id = 50 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data @@ -60,7 +60,7 @@ // MAPPING-NEXT: %34 = "neura.data_mov"(%6) {dfg_id = 33 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %35 = "neura.data_mov"(%20) {dfg_id = 49 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 55 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%20) {dfg_id = 48 : i32, mapping_locs = [{id = 4004 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 4 : i32}, {id = 4004 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 5 : i32}, {id = 4004 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 6 : i32}, {id = 4004 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 7 : i32}, {id = 4004 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 8 : i32}, {id = 4004 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 9 : i32}, {id = 4004 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 10 : i32}, {id = 4004 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 4004 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 4004 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 4004 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 4004 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%20) {dfg_id = 48 : i32, mapping_locs = [{id = 4010 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 4 : i32}, {id = 4010 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 5 : i32}, {id = 4010 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 6 : i32}, {id = 4010 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 7 : i32}, {id = 4010 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 8 : i32}, {id = 4010 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 9 : i32}, {id = 4010 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 10 : i32}, {id = 4010 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 11 : i32}, {id = 4010 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 4010 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 4010 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 4010 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %38 = "neura.not"(%37) {dfg_id = 54 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %39 = "neura.data_mov"(%24) {dfg_id = 59 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %40 = "neura.data_mov"(%38) {dfg_id = 60 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data @@ -104,11 +104,11 @@ // MAPPING-NEXT: %78 = neura.reserve {dfg_id = 17 : i32} : !neura.data // MAPPING-NEXT: %79 = "neura.data_mov"(%59) {dfg_id = 74 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %80 = neura.phi_start %79, %78 {dfg_id = 80 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%77) {dfg_id = 86 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 194 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 194 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.data_mov"(%80) {dfg_id = 88 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 15 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 3 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 7 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 192 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%77) {dfg_id = 86 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 208 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 208 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.data_mov"(%80) {dfg_id = 88 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 176 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 201 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 201 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %83 = "neura.gep"(%81, %82) <{operandSegmentSizes = array}> {dfg_id = 96 : i32, lhs_value = "%arg4", mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %84 = neura.reserve {dfg_id = 18 : i32} : !neura.data -// MAPPING-NEXT: %85 = "neura.data_mov"(%74) {dfg_id = 90 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 195 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 8 : i32}, {id = 195 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 195 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 195 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 195 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 195 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 195 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 195 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %85 = "neura.data_mov"(%74) {dfg_id = 90 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 193 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %86 = neura.phi_start %85, %84 {dfg_id = 98 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %87 = neura.reserve {dfg_id = 19 : i32} : !neura.data // MAPPING-NEXT: %88 = "neura.data_mov"(%65) {dfg_id = 116 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data @@ -133,25 +133,25 @@ // MAPPING-NEXT: %107 = neura.phi_start %106, %105 {dfg_id = 97 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %108 = "neura.data_mov"(%104) {dfg_id = 125 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %109 = "neura.load"(%108) {dfg_id = 138 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %110 = "neura.data_mov"(%101) {dfg_id = 107 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %111 = "neura.data_mov"(%107) {dfg_id = 111 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4003 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 4003 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 4003 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 4003 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 4003 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 4003 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %110 = "neura.data_mov"(%101) {dfg_id = 107 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %111 = "neura.data_mov"(%107) {dfg_id = 111 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 4009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 4009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 4009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 4009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 4009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %112 = "neura.gep"(%110, %111) <{operandSegmentSizes = array}> {dfg_id = 120 : i32, lhs_value = "%arg5", mapping_locs = [{id = 4 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 130 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %114 = "neura.load"(%113) {dfg_id = 140 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 144 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = "neura.data_mov"(%109) {dfg_id = 142 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %117 = "neura.mul"(%115, %116) {dfg_id = 152 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %118 = "neura.data_mov"(%98) {dfg_id = 104 : i32, mapping_locs = [{id = 196 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 196 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 196 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 196 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}, {id = 196 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %119 = "neura.data_mov"(%107) {dfg_id = 110 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 197 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 9 : i32}, {id = 197 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 10 : i32}, {id = 197 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 11 : i32}, {id = 197 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 12 : i32}, {id = 197 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 13 : i32}, {id = 197 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 14 : i32}, {id = 197 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 15 : i32}, {id = 197 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 144 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 28 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = "neura.data_mov"(%109) {dfg_id = 142 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %117 = "neura.mul"(%115, %116) {dfg_id = 152 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %118 = "neura.data_mov"(%98) {dfg_id = 104 : i32, mapping_locs = [{id = 209 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 209 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 209 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 209 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 209 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %119 = "neura.data_mov"(%107) {dfg_id = 110 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 194 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 194 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 194 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 194 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 194 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 194 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 194 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 194 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %120 = "neura.gep"(%118, %119) <{operandSegmentSizes = array}> {dfg_id = 119 : i32, lhs_value = "%arg3", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %121 = "neura.data_mov"(%120) {dfg_id = 129 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %122 = "neura.load"(%121) {dfg_id = 139 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %123 = "neura.data_mov"(%122) {dfg_id = 143 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %124 = "neura.data_mov"(%117) {dfg_id = 160 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %125 = "neura.add"(%123, %124) {dfg_id = 181 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 191 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %127 = "neura.data_mov"(%120) {dfg_id = 128 : i32, mapping_locs = [{id = 196 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}, {id = 19 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%126, %127) {dfg_id = 202 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %123 = "neura.data_mov"(%122) {dfg_id = 143 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 2000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %124 = "neura.data_mov"(%117) {dfg_id = 160 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %125 = "neura.add"(%123, %124) {dfg_id = 181 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 191 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %127 = "neura.data_mov"(%120) {dfg_id = 128 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 2009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 2009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 2009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%126, %127) {dfg_id = 202 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () // MAPPING-NEXT: %128 = "neura.data_mov"(%107) {dfg_id = 109 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %129 = "neura.add"(%128) {dfg_id = 118 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %130 = "neura.data_mov"(%129) {dfg_id = 127 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data @@ -159,52 +159,52 @@ // MAPPING-NEXT: %132 = "neura.icmp"(%130, %131) <{cmpType = "eq"}> {dfg_id = 141 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %133 = "neura.data_mov"(%132) {dfg_id = 151 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %134 = "neura.not"(%133) {dfg_id = 159 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %135 = "neura.data_mov"(%129) {dfg_id = 126 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 162 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 162 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 162 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 162 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %136 = "neura.data_mov"(%134) {dfg_id = 180 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 163 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 163 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %135 = "neura.data_mov"(%129) {dfg_id = 126 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 169 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 169 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %136 = "neura.data_mov"(%134) {dfg_id = 180 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 176 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %137 = neura.grant_predicate %135, %136 {dfg_id = 190 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %137 -> %105 {dfg_id = 201 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 161 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %138 = "neura.data_mov"(%104) {dfg_id = 124 : i32, mapping_locs = [{id = 199 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 15 : i32}, {id = 199 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 16 : i32}, {id = 199 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 17 : i32}, {id = 199 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 18 : i32}, {id = 199 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 19 : i32}, {id = 199 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 20 : i32}, {id = 199 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 21 : i32}, {id = 199 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %139 = "neura.data_mov"(%134) {dfg_id = 179 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 14 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 200 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %140 = neura.grant_predicate %138, %139 {dfg_id = 189 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %140 -> %102 {dfg_id = 200 : i32, mapping_locs = [{id = 199 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 23 : i32}, {id = 199 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 24 : i32}, {id = 199 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 25 : i32}, {id = 199 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 26 : i32}, {id = 199 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 27 : i32}, {id = 199 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 28 : i32}, {id = 199 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 29 : i32}, {id = 199 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 30 : i32}, {id = 199 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %141 = "neura.data_mov"(%101) {dfg_id = 106 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 8001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 8001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 8001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 8001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 8001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 8001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 8001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 8001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %142 = "neura.data_mov"(%134) {dfg_id = 178 : i32, mapping_locs = [{id = 167 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 11 : i32}, {id = 13 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 12 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 8002 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 8002 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 8002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 8002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 8002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %143 = neura.grant_predicate %141, %142 {dfg_id = 188 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %143 -> %99 {dfg_id = 199 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 4002 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}, {id = 4002 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 25 : i32}, {id = 4002 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %144 = "neura.data_mov"(%98) {dfg_id = 103 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 2000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 2000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 2000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %145 = "neura.data_mov"(%134) {dfg_id = 177 : i32, mapping_locs = [{id = 166 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 11 : i32}, {id = 15 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 2001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 2001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 2001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %146 = neura.grant_predicate %144, %145 {dfg_id = 187 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %146 -> %96 {dfg_id = 198 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 196 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 20 : i32}, {id = 196 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 21 : i32}, {id = 196 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 22 : i32}, {id = 196 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 23 : i32}, {id = 196 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 24 : i32}, {id = 196 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 25 : i32}, {id = 196 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 26 : i32}, {id = 196 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 27 : i32}, {id = 196 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %147 = "neura.data_mov"(%95) {dfg_id = 132 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 289 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 289 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %148 = "neura.data_mov"(%134) {dfg_id = 176 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %149 = neura.grant_predicate %147, %148 {dfg_id = 186 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %149 -> %93 {dfg_id = 197 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 289 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 289 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 289 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 289 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 289 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 289 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 289 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %137 -> %105 {dfg_id = 201 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %138 = "neura.data_mov"(%104) {dfg_id = 124 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 2001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 2001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %139 = "neura.data_mov"(%134) {dfg_id = 179 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 14 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 19 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 2008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 2008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %140 = neura.grant_predicate %138, %139 {dfg_id = 189 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %140 -> %102 {dfg_id = 200 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 210 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 20 : i32}, {id = 210 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 21 : i32}, {id = 210 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 22 : i32}, {id = 210 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 23 : i32}, {id = 210 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 24 : i32}, {id = 210 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 25 : i32}, {id = 210 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 26 : i32}, {id = 210 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 27 : i32}, {id = 210 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 28 : i32}, {id = 210 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 29 : i32}, {id = 210 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 30 : i32}, {id = 210 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %141 = "neura.data_mov"(%101) {dfg_id = 106 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 1001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 1001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 1001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 1001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 1001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %142 = "neura.data_mov"(%134) {dfg_id = 178 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 15 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 1008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 1008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 1008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 1008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %143 = neura.grant_predicate %141, %142 {dfg_id = 188 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %143 -> %99 {dfg_id = 199 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 4016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 4016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 4016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 4016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 4016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %144 = "neura.data_mov"(%98) {dfg_id = 103 : i32, mapping_locs = [{id = 209 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 209 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 209 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 209 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 209 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}, {id = 209 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}, {id = 209 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 209 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 209 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 209 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 209 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %145 = "neura.data_mov"(%134) {dfg_id = 177 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 14 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 195 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 195 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 195 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 195 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 195 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 195 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 195 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 195 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 195 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 195 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %146 = neura.grant_predicate %144, %145 {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %146 -> %96 {dfg_id = 198 : i32, mapping_locs = [{id = 201 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 201 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 201 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 201 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}, {id = 201 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 27 : i32}, {id = 201 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %147 = "neura.data_mov"(%95) {dfg_id = 132 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %148 = "neura.data_mov"(%134) {dfg_id = 176 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %149 = neura.grant_predicate %147, %148 {dfg_id = 186 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %149 -> %93 {dfg_id = 197 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 296 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 296 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %150 = "neura.data_mov"(%92) {dfg_id = 135 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 322 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 322 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 322 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 322 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 322 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 322 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 322 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 322 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %151 = "neura.data_mov"(%134) {dfg_id = 175 : i32, mapping_locs = [{id = 165 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 11 : i32}, {id = 16 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 323 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 323 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 323 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 323 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 323 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 323 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %151 = "neura.data_mov"(%134) {dfg_id = 175 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %152 = neura.grant_predicate %150, %151 {dfg_id = 185 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %152 -> %90 {dfg_id = 196 : i32, mapping_locs = [{id = 323 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 323 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 323 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 323 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 323 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 323 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 323 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 323 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %153 = "neura.data_mov"(%89) {dfg_id = 137 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 1 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 1 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %154 = "neura.data_mov"(%134) {dfg_id = 174 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 3 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 3 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 3 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %152 -> %90 {dfg_id = 196 : i32, mapping_locs = [{id = 330 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 330 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 330 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 330 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 330 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 330 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 330 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 330 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %153 = "neura.data_mov"(%89) {dfg_id = 137 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 2 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 2 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %154 = "neura.data_mov"(%134) {dfg_id = 174 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 11 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %155 = neura.grant_predicate %153, %154 {dfg_id = 184 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %155 -> %87 {dfg_id = 195 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 4006 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 20 : i32}, {id = 4006 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 21 : i32}, {id = 4006 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 22 : i32}, {id = 4006 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 23 : i32}, {id = 4006 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 24 : i32}, {id = 4006 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 25 : i32}, {id = 4006 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 26 : i32}, {id = 4006 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 27 : i32}, {id = 4006 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 28 : i32}, {id = 4006 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %155 -> %87 {dfg_id = 195 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 4012 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 20 : i32}, {id = 4012 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 21 : i32}, {id = 4012 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 22 : i32}, {id = 4012 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 23 : i32}, {id = 4012 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 24 : i32}, {id = 4012 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 25 : i32}, {id = 4012 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 26 : i32}, {id = 4012 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 27 : i32}, {id = 4012 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 28 : i32}, {id = 4012 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %156 = "neura.data_mov"(%86) {dfg_id = 113 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 224 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %157 = "neura.data_mov"(%134) {dfg_id = 173 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 10 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 18 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 225 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 225 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 225 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 225 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %157 = "neura.data_mov"(%134) {dfg_id = 173 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 14 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 18 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 232 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 232 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 232 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 232 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 232 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %158 = neura.grant_predicate %156, %157 {dfg_id = 183 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %158 -> %84 {dfg_id = 194 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 198 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 20 : i32}, {id = 198 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 21 : i32}, {id = 198 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 22 : i32}, {id = 198 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 23 : i32}, {id = 198 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 24 : i32}, {id = 198 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 25 : i32}, {id = 198 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 26 : i32}, {id = 198 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 27 : i32}, {id = 198 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 28 : i32}, {id = 198 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 29 : i32}, {id = 198 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 30 : i32}, {id = 198 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 31 : i32}, {id = 198 : i32, index_per_ii = 15 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %158 -> %84 {dfg_id = 194 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 203 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 20 : i32}, {id = 203 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 21 : i32}, {id = 203 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 22 : i32}, {id = 203 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 23 : i32}, {id = 203 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 24 : i32}, {id = 203 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 25 : i32}, {id = 203 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 203 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}, {id = 203 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 28 : i32}, {id = 203 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 29 : i32}, {id = 203 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 30 : i32}, {id = 203 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 31 : i32}, {id = 203 : i32, index_per_ii = 15 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %159 = "neura.data_mov"(%101) {dfg_id = 105 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %160 = "neura.data_mov"(%132) {dfg_id = 150 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %160 = "neura.data_mov"(%132) {dfg_id = 150 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %161 = neura.grant_predicate %159, %160 {dfg_id = 158 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %162 = "neura.data_mov"(%92) {dfg_id = 134 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %163 = "neura.data_mov"(%132) {dfg_id = 149 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 20 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %164 = neura.grant_predicate %162, %163 {dfg_id = 157 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %162 = "neura.data_mov"(%92) {dfg_id = 134 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %163 = "neura.data_mov"(%132) {dfg_id = 149 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %164 = neura.grant_predicate %162, %163 {dfg_id = 157 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %165 = "neura.data_mov"(%98) {dfg_id = 102 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %166 = "neura.data_mov"(%132) {dfg_id = 148 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %166 = "neura.data_mov"(%132) {dfg_id = 148 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %167 = neura.grant_predicate %165, %166 {dfg_id = 156 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %168 = "neura.data_mov"(%89) {dfg_id = 136 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %169 = "neura.data_mov"(%132) {dfg_id = 147 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %169 = "neura.data_mov"(%132) {dfg_id = 147 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %170 = neura.grant_predicate %168, %169 {dfg_id = 155 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %171 = "neura.data_mov"(%86) {dfg_id = 112 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %172 = "neura.data_mov"(%132) {dfg_id = 146 : i32, mapping_locs = [{id = 164 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 10 : i32}, {id = 164 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 14 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 193 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 193 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %172 = "neura.data_mov"(%132) {dfg_id = 146 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 200 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 200 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %173 = neura.grant_predicate %171, %172 {dfg_id = 154 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %174 = "neura.data_mov"(%95) {dfg_id = 131 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %175 = "neura.data_mov"(%132) {dfg_id = 145 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data @@ -212,34 +212,34 @@ // MAPPING-NEXT: %177 = "neura.data_mov"(%161) {dfg_id = 172 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %178 = "neura.add"(%177) {dfg_id = 182 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %179 = "neura.data_mov"(%178) {dfg_id = 193 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %180 = "neura.data_mov"(%164) {dfg_id = 171 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %180 = "neura.data_mov"(%164) {dfg_id = 171 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 297 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %181 = "neura.icmp"(%179, %180) <{cmpType = "eq"}> {dfg_id = 203 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %182 = "neura.data_mov"(%181) {dfg_id = 209 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %183 = "neura.not"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %184 = "neura.data_mov"(%178) {dfg_id = 192 : i32, mapping_locs = [{id = 164 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 164 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 164 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}, {id = 164 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %185 = "neura.data_mov"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 160 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %184 = "neura.data_mov"(%178) {dfg_id = 192 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 161 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %185 = "neura.data_mov"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 169 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %186 = neura.grant_predicate %184, %185 {dfg_id = 234 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %186 -> %78 {dfg_id = 242 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %187 = "neura.data_mov"(%167) {dfg_id = 168 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 324 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 324 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}, {id = 324 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}, {id = 324 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}, {id = 324 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 18 : i32}, {id = 324 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 19 : i32}, {id = 324 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %188 = "neura.data_mov"(%183) {dfg_id = 226 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 41 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 45 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 325 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 18 : i32}, {id = 325 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 19 : i32}, {id = 325 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %186 -> %78 {dfg_id = 242 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %187 = "neura.data_mov"(%167) {dfg_id = 168 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 323 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 323 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 323 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 323 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 323 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 323 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 323 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %188 = "neura.data_mov"(%183) {dfg_id = 226 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 336 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 336 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 336 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 336 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %189 = neura.grant_predicate %187, %188 {dfg_id = 233 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %189 -> %75 {dfg_id = 241 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 194 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 194 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 194 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}, {id = 194 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 25 : i32}, {id = 194 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 26 : i32}, {id = 194 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %189 -> %75 {dfg_id = 241 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 208 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 208 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 208 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}, {id = 208 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %190 = "neura.data_mov"(%173) {dfg_id = 164 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %191 = "neura.data_mov"(%183) {dfg_id = 225 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 28 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %191 = "neura.data_mov"(%183) {dfg_id = 225 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %192 = neura.grant_predicate %190, %191 {dfg_id = 232 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %192 -> %72 {dfg_id = 240 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 162 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 162 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 162 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %193 = "neura.data_mov"(%176) {dfg_id = 162 : i32, mapping_locs = [{id = 292 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 292 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 292 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 292 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 292 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}, {id = 292 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}, {id = 292 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 17 : i32}, {id = 292 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %194 = "neura.data_mov"(%183) {dfg_id = 224 : i32, mapping_locs = [{id = 293 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 15 : i32}, {id = 293 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 16 : i32}, {id = 293 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 17 : i32}, {id = 293 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %192 -> %72 {dfg_id = 240 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %193 = "neura.data_mov"(%176) {dfg_id = 162 : i32, mapping_locs = [{id = 298 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 11 : i32}, {id = 298 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 298 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 298 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 298 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 298 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 298 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 298 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %194 = "neura.data_mov"(%183) {dfg_id = 224 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 289 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %195 = neura.grant_predicate %193, %194 {dfg_id = 231 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %195 -> %69 {dfg_id = 239 : i32, mapping_locs = [{id = 290 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 290 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 290 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 290 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %196 = "neura.data_mov"(%164) {dfg_id = 170 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 321 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %195 -> %69 {dfg_id = 239 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 297 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 297 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 297 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 297 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 297 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %196 = "neura.data_mov"(%164) {dfg_id = 170 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 321 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %197 = "neura.data_mov"(%183) {dfg_id = 223 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %198 = neura.grant_predicate %196, %197 {dfg_id = 230 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %198 -> %66 {dfg_id = 238 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 321 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 321 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 321 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 321 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 321 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 321 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}, {id = 321 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %199 = "neura.data_mov"(%170) {dfg_id = 166 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 16 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 295 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 16 : i32}, {id = 295 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 17 : i32}, {id = 295 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 18 : i32}, {id = 295 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 19 : i32}, {id = 295 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 20 : i32}, {id = 295 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %200 = "neura.data_mov"(%183) {dfg_id = 222 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 296 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 229 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %201 -> %63 {dfg_id = 237 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 25 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 4007 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 24 : i32}, {id = 4007 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 25 : i32}, {id = 4007 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 26 : i32}, {id = 4007 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 27 : i32}, {id = 4007 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 7 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %198 -> %66 {dfg_id = 238 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 328 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 328 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 328 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %199 = "neura.data_mov"(%170) {dfg_id = 166 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 8001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 8001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 8001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 8001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %200 = "neura.data_mov"(%183) {dfg_id = 222 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 229 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %201 -> %63 {dfg_id = 237 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 4024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 4024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 4024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 4024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 4024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}, {id = 4024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 26 : i32}, {id = 4024 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 27 : i32}, {id = 4024 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %202 = "neura.data_mov"(%167) {dfg_id = 167 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %203 = "neura.data_mov"(%181) {dfg_id = 208 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %204 = neura.grant_predicate %202, %203 {dfg_id = 214 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data @@ -247,43 +247,43 @@ // MAPPING-NEXT: %206 = "neura.data_mov"(%181) {dfg_id = 207 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %207 = neura.grant_predicate %205, %206 {dfg_id = 213 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %208 = "neura.data_mov"(%173) {dfg_id = 163 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = "neura.data_mov"(%181) {dfg_id = 206 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 41 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 45 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 33 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = "neura.data_mov"(%181) {dfg_id = 206 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 33 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 201 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 201 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 201 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 212 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %211 = "neura.data_mov"(%176) {dfg_id = 161 : i32, mapping_locs = [{id = 290 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 290 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 290 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 290 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 290 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %212 = "neura.data_mov"(%181) {dfg_id = 205 : i32, mapping_locs = [{id = 291 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 291 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 211 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %214 = "neura.data_mov"(%164) {dfg_id = 169 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %215 = "neura.data_mov"(%181) {dfg_id = 204 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 210 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %211 = "neura.data_mov"(%176) {dfg_id = 161 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %212 = "neura.data_mov"(%181) {dfg_id = 205 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 211 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %214 = "neura.data_mov"(%164) {dfg_id = 169 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 297 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 297 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 297 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %215 = "neura.data_mov"(%181) {dfg_id = 204 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 210 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %217 = "neura.data_mov"(%204) {dfg_id = 221 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %218 = "neura.add"(%217) {dfg_id = 228 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %219 = "neura.data_mov"(%218) {dfg_id = 236 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 162 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %220 = "neura.data_mov"(%207) {dfg_id = 220 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %219 = "neura.data_mov"(%218) {dfg_id = 236 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %220 = "neura.data_mov"(%207) {dfg_id = 220 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 169 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %221 = "neura.icmp"(%219, %220) <{cmpType = "eq"}> {dfg_id = 243 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPING-NEXT: %222 = "neura.data_mov"(%221) {dfg_id = 246 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %223 = "neura.not"(%222) {dfg_id = 248 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %224 = "neura.data_mov"(%218) {dfg_id = 235 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 195 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 195 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 195 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 195 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 195 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %225 = "neura.data_mov"(%223) {dfg_id = 254 : i32, mapping_locs = [{id = 164 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 19 : i32}, {id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %224 = "neura.data_mov"(%218) {dfg_id = 235 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 202 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 202 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 202 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 202 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 202 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %225 = "neura.data_mov"(%223) {dfg_id = 254 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %226 = neura.grant_predicate %224, %225 {dfg_id = 260 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %226 -> %60 {dfg_id = 266 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 193 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 193 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}, {id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %226 -> %60 {dfg_id = 266 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %227 = "neura.data_mov"(%210) {dfg_id = 218 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %228 = "neura.data_mov"(%223) {dfg_id = 253 : i32, mapping_locs = [{id = 165 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 19 : i32}, {id = 165 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %228 = "neura.data_mov"(%223) {dfg_id = 253 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 169 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %229 = neura.grant_predicate %227, %228 {dfg_id = 259 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %229 -> %57 {dfg_id = 265 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %230 = "neura.data_mov"(%213) {dfg_id = 217 : i32, mapping_locs = [{id = 294 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 16 : i32}, {id = 294 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 17 : i32}, {id = 294 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 18 : i32}, {id = 294 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 19 : i32}, {id = 294 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 6 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %231 = "neura.data_mov"(%223) {dfg_id = 252 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 258 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %232 -> %54 {dfg_id = 264 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %233 = "neura.data_mov"(%216) {dfg_id = 216 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 194 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 194 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 194 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 194 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %234 = "neura.data_mov"(%223) {dfg_id = 251 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 257 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %235 -> %51 {dfg_id = 263 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 322 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 322 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 322 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 322 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}, {id = 322 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %236 = "neura.data_mov"(%207) {dfg_id = 219 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 24 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 291 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 291 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 291 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %229 -> %57 {dfg_id = 265 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4017 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %230 = "neura.data_mov"(%213) {dfg_id = 217 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 33 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %231 = "neura.data_mov"(%223) {dfg_id = 252 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 258 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %232 -> %54 {dfg_id = 264 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %233 = "neura.data_mov"(%216) {dfg_id = 216 : i32, mapping_locs = [{id = 299 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 16 : i32}, {id = 299 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 17 : i32}, {id = 299 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 18 : i32}, {id = 299 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 19 : i32}, {id = 299 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %234 = "neura.data_mov"(%223) {dfg_id = 251 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 257 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %235 -> %51 {dfg_id = 263 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 329 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 329 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 329 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 329 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %236 = "neura.data_mov"(%207) {dfg_id = 219 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 290 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 290 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 290 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 290 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %237 = "neura.data_mov"(%223) {dfg_id = 250 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %238 = neura.grant_predicate %236, %237 {dfg_id = 256 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %238 -> %48 {dfg_id = 262 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 25 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4005 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 22 : i32}, {id = 4005 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 23 : i32}, {id = 4005 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 24 : i32}, {id = 4005 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 25 : i32}, {id = 4005 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 26 : i32}, {id = 4005 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 5 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %239 = "neura.data_mov"(%221) {dfg_id = 244 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 162 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %240 = "neura.data_mov"(%221) {dfg_id = 245 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 163 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %238 -> %48 {dfg_id = 262 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 25 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4011 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 22 : i32}, {id = 4011 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 23 : i32}, {id = 4011 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 24 : i32}, {id = 4011 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 25 : i32}, {id = 4011 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 4011 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %239 = "neura.data_mov"(%221) {dfg_id = 244 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %240 = "neura.data_mov"(%221) {dfg_id = 245 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %241 = neura.grant_predicate %239, %240 {dfg_id = 247 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %242 = "neura.data_mov"(%41) {dfg_id = 72 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %243 = "neura.data_mov"(%241) {dfg_id = 249 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data @@ -298,47 +298,302 @@ // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 // YAML-NEXT: compiled_ii: 17 -// YAML: core_id: "0" -// YAML: entries: -// YAML: - entry_id: "entry0" -// YAML: instructions: -// YAML: - index_per_ii: 0 -// YAML: operations: -// YAML: - opcode: "GRANT_PREDICATE" -// YAML: - index_per_ii: 1 -// YAML: operations: -// YAML: - opcode: "MUL" -// YAML: - index_per_ii: 2 -// YAML: operations: -// YAML: - opcode: "GRANT_PREDICATE" -// YAML: - index_per_ii: 4 -// YAML: operations: -// YAML: - opcode: "GRANT_ONCE" -// YAML: - opcode: "DATA_MOV" -// YAML: - index_per_ii: 5 -// YAML: operations: -// YAML: - opcode: "DATA_MOV" -// YAML: - index_per_ii: 8 -// YAML: operations: -// YAML: - opcode: "GRANT_ONCE" -// YAML: - index_per_ii: 9 -// YAML: operations: -// YAML: - opcode: "GRANT_PREDICATE" -// YAML: - index_per_ii: 10 -// YAML: operations: -// YAML: - opcode: "ZEXT" -// YAML: - index_per_ii: 13 -// YAML: operations: -// YAML: - opcode: "DATA_MOV" -// YAML: - index_per_ii: 14 -// YAML: operations: -// YAML: - opcode: "DATA_MOV" -// YAML: - index_per_ii: 15 -// YAML: operations: -// YAML: - opcode: "NOT" -// YAML: - index_per_ii: 16 -// YAML: operations: -// YAML: - opcode: "GRANT_ONCE" +// YAML-NEXT: cores: +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "0" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 66 +// YAML-NEXT: time_step: 17 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 184 +// YAML-NEXT: time_step: 19 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$2" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 1990001 +// YAML-NEXT: time_step: 20 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 6 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 43 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 52 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 8 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 58 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 10 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ZEXT" +// YAML-NEXT: id: 71 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 13 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 174 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 14 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 137 +// YAML-NEXT: time_step: 14 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$2" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 15 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 45 +// YAML-NEXT: time_step: 15 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 16 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 53 +// YAML-NEXT: time_step: 16 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 72 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 188 +// YAML-NEXT: time_step: 19 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI" +// YAML-NEXT: id: 255 +// YAML-NEXT: time_step: 21 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "RETURN_VOID" +// YAML-NEXT: id: 267 +// YAML-NEXT: time_step: 22 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 12 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 106 +// YAML-NEXT: time_step: 12 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 13 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 178 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 139 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 128 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$9" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 189 +// YAML-NEXT: time_step: 19 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 181 +// YAML-NEXT: time_step: 20 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" // // ASM: # Compiled II: 17 // ASM: PE(0,0): @@ -346,37 +601,289 @@ // ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [EAST, RED] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: MUL, [NORTH, RED], [EAST, RED] -> [EAST, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$3] -> [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$2], [$8] -> [NORTH, RED] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [NORTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [NORTH, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$2] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { // ASM-NEXT: ZEXT, [$0] -> [NORTH, RED] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$2] (t=14, inv_iters=0) // ASM-NEXT: } (idx_per_ii=14) // ASM-NEXT: { -// ASM-NEXT: NOT, [$2] -> [$0] (t=15, inv_iters=0) +// ASM-NEXT: NOT, [$1] -> [$0] (t=15, inv_iters=0) // ASM-NEXT: } (idx_per_ii=15) // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=16, inv_iters=0) // ASM-NEXT: } (idx_per_ii=16) // ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: PHI, [$0], [NORTH, RED] -> [$0] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [$0] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [NORTH, RED] -> [$0] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [$9] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM: PE(0,1): +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [arg1] -> [$0] (t=1, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: AND, [NORTH, RED], [$0] -> [$0], [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$12] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [$0] -> [SOUTH, RED], [EAST, RED], [$0], [$10] (t=4, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$16] (t=21, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$24] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [SOUTH, RED], [$0] -> [$0], [EAST, RED] (t=5, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$17] (t=22, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$11] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$17] -> [EAST, RED], [$0] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$8] -> [EAST, RED], [$0] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$9] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$16] -> [$1], [EAST, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [SOUTH, RED], [$11] -> [$0] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$24] -> [$0] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$12] -> [SOUTH, RED], [$0] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg5], [$1], [$9] -> [NORTH, RED] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$10] -> [SOUTH, RED] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$1], [$9] -> [WEST, RED] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [$0], [$9] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [EAST, RED], [$9], [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [SOUTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$9] -> [WEST, RED] (t=21, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$1] (t=21, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [NORTH, RED] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [WEST, RED] -> [$0] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: ZEXT, [$0] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [WEST, RED], [$1] -> [EAST, RED], [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$8] -> [WEST, RED], [EAST, RED], [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$9] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [$0], [NORTH, RED] -> [$0], [$8], [NORTH, RED], [EAST, RED], [WEST, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$16], [NORTH, RED], [WEST, RED] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$16] -> [EAST, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$16] -> [SOUTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [NORTH, RED], [$1] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$9], [$16] -> [$8] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$0] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [EAST, RED] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM: PE(2,1): +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg3], [$17], [$2] -> [SOUTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$10] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED], [$0] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$9] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$1], [WEST, RED] -> [WEST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=20, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$18] (t=20, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$11] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [arg1] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$10], [$0] -> [$8] (t=22, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$16] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$17], [$3] -> [$9] (t=23, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$2] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$8] -> [$0] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$16] -> [$16], [$0] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$9] -> [$17], [$0] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$9] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED], [WEST, RED] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$3] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg4], [$16], [$9] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$18] -> [SOUTH, RED] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$1], [$11] -> [EAST, RED], [$0] (t=16, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM: PE(3,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM: PE(0,2): +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [arg2] -> [$0] (t=0, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: AND, [EAST, RED], [$0] -> [SOUTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [SOUTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [SOUTH, RED] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [SOUTH, RED], [EAST, RED] -> [EAST, RED] (t=15, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=15, inv_iters=0) diff --git a/test/e2e/gemv/gemv_kernel.mlir b/test/e2e/gemv/gemv_kernel.mlir index af0478fa..d492ce48 100644 --- a/test/e2e/gemv/gemv_kernel.mlir +++ b/test/e2e/gemv/gemv_kernel.mlir @@ -22,7 +22,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // -// MAPPING: func.func @kernel_gemv_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 11 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 3 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel_gemv_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 3 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data @@ -39,10 +39,10 @@ // MAPPING-NEXT: %13 = "neura.data_mov"(%12) {dfg_id = 37 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %14 = "neura.gep"(%13) <{operandSegmentSizes = array}> {dfg_id = 43 : i32, lhs_value = "%arg0", mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %15 = neura.reserve {dfg_id = 5 : i32} : !neura.data -// MAPPING-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 23 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 23 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %17 = neura.phi_start %16, %15 {dfg_id = 29 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %18 = neura.reserve {dfg_id = 6 : i32} : !neura.data -// MAPPING-NEXT: %19 = "neura.data_mov"(%7) {dfg_id = 19 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = "neura.data_mov"(%7) {dfg_id = 19 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 176 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %20 = neura.phi_start %19, %18 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %21 = neura.reserve {dfg_id = 7 : i32} : !neura.data // MAPPING-NEXT: %22 = "neura.data_mov"(%10) {dfg_id = 20 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data @@ -81,31 +81,31 @@ // MAPPING-NEXT: %55 = "neura.data_mov"(%53) {dfg_id = 73 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %56 = neura.grant_predicate %54, %55 {dfg_id = 81 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %56 -> %30 {dfg_id = 90 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %57 = "neura.data_mov"(%47) {dfg_id = 106 : i32, mapping_locs = [{id = 201 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 201 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %57 = "neura.data_mov"(%47) {dfg_id = 106 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %58 = "neura.data_mov"(%53) {dfg_id = 72 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 208 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 208 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %59 = neura.grant_predicate %57, %58 {dfg_id = 112 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %59 -> %27 {dfg_id = 117 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 337 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 337 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 337 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 337 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 337 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}, {id = 337 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %60 = "neura.data_mov"(%26) {dfg_id = 57 : i32, mapping_locs = [{id = 4024 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 4 : i32}, {id = 4024 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 5 : i32}, {id = 4024 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 6 : i32}, {id = 4024 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 7 : i32}, {id = 4024 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 4024 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 4024 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %61 = "neura.data_mov"(%53) {dfg_id = 71 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %59 -> %27 {dfg_id = 117 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 330 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 330 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 330 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 330 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 330 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 330 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %60 = "neura.data_mov"(%26) {dfg_id = 57 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %61 = "neura.data_mov"(%53) {dfg_id = 71 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 4009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 4009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 4009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %62 = neura.grant_predicate %60, %61 {dfg_id = 80 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %62 -> %24 {dfg_id = 89 : i32, mapping_locs = [{id = 4009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 4009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 4009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 4009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %63 = "neura.data_mov"(%23) {dfg_id = 36 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 4016 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 4016 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 4016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %64 = "neura.data_mov"(%53) {dfg_id = 70 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 21 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %62 -> %24 {dfg_id = 89 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %63 = "neura.data_mov"(%23) {dfg_id = 36 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %64 = "neura.data_mov"(%53) {dfg_id = 70 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 4016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %65 = neura.grant_predicate %63, %64 {dfg_id = 79 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %65 -> %21 {dfg_id = 88 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 69 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 17 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 176 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 176 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 176 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 69 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %68 = neura.grant_predicate %66, %67 {dfg_id = 78 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %68 -> %18 {dfg_id = 87 : i32, mapping_locs = [{id = 184 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 184 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 184 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 184 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 184 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}, {id = 184 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 184 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %68 -> %18 {dfg_id = 87 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %69 = "neura.data_mov"(%17) {dfg_id = 40 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%53) {dfg_id = 68 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 329 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 329 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 329 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%53) {dfg_id = 68 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 328 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 328 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %71 = neura.grant_predicate %69, %70 {dfg_id = 77 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %71 -> %15 {dfg_id = 86 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 336 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 336 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 336 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 336 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 336 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 336 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 336 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: neura.ctrl_mov %71 -> %15 {dfg_id = 86 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 329 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 329 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %72 = "neura.data_mov"(%23) {dfg_id = 35 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %73 = "neura.data_mov"(%51) {dfg_id = 54 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %74 = neura.grant_predicate %72, %73 {dfg_id = 61 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %75 = "neura.data_mov"(%47) {dfg_id = 105 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %76 = "neura.data_mov"(%51) {dfg_id = 53 : i32, mapping_locs = [{id = 177 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %76 = "neura.data_mov"(%51) {dfg_id = 53 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %77 = neura.grant_predicate %75, %76 {dfg_id = 111 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %78 = "neura.data_mov"(%20) {dfg_id = 33 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %79 = "neura.data_mov"(%51) {dfg_id = 52 : i32, mapping_locs = [{id = 170 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 5 : i32}, {id = 170 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 6 : i32}, {id = 170 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 7 : i32}, {id = 170 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 8 : i32}, {id = 170 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data @@ -128,7 +128,7 @@ // MAPPING-NEXT: %95 = "neura.data_mov"(%93) {dfg_id = 104 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %96 = neura.grant_predicate %94, %95 {dfg_id = 110 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %96 -> %8 {dfg_id = 115 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %97 = "neura.data_mov"(%80) {dfg_id = 65 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %97 = "neura.data_mov"(%80) {dfg_id = 65 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 162 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %98 = "neura.data_mov"(%93) {dfg_id = 103 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %99 = neura.grant_predicate %97, %98 {dfg_id = 109 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %99 -> %5 {dfg_id = 114 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : !neura.data !neura.data @@ -137,7 +137,7 @@ // MAPPING-NEXT: %102 = neura.grant_predicate %100, %101 {dfg_id = 108 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %102 -> %2 {dfg_id = 113 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %103 = "neura.data_mov"(%91) {dfg_id = 94 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %104 = "neura.data_mov"(%91) {dfg_id = 95 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %104 = "neura.data_mov"(%91) {dfg_id = 95 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %105 = neura.grant_predicate %103, %104 {dfg_id = 98 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %106 = "neura.data_mov"(%105) {dfg_id = 101 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: neura.return_void %106 : !neura.data {dfg_id = 107 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} @@ -251,16 +251,6 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 710003 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: - column: 1 // YAML-NEXT: row: 0 // YAML-NEXT: core_id: "1" @@ -291,20 +281,6 @@ // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 190000 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 7 @@ -319,18 +295,6 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 710002 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 9 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" @@ -396,18 +360,6 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 710001 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 8 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "MUL" @@ -435,17 +387,65 @@ // YAML-NEXT: time_step: 11 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$24" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$9" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$9" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" // YAML-NEXT: id: 20 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 50 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 26 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 6 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 61 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" // ASM: # Compiled II: 11 @@ -468,25 +468,18 @@ // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { // ASM-NEXT: GEP, [arg2], [$0] -> [EAST, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM: PE(1,0): // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [NORTH, RED] -> [$0], [NORTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [NORTH, RED] -> [NORTH, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { // ASM-NEXT: LOAD, [NORTH, RED] -> [EAST, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { @@ -501,23 +494,20 @@ // ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { // ASM-NEXT: MUL, [$0], [WEST, RED] -> [NORTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$24], [$0] -> [$9] (t=11, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$9] -> [$1] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$9] -> [EAST, RED], [$24] (t=4, inv_iters=0) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [EAST, RED], [$1] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [$16], [$0] (t=5, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [$8], [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [SOUTH, RED], [$0] (t=6, inv_iters=0) @@ -526,55 +516,55 @@ // ASM-NEXT: ADD, [$0], [#1] -> [$0], [EAST, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [EAST, RED], [$0], [$8] (t=8, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [EAST, RED], [$0] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$9] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [NORTH, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$16], [EAST, RED] -> [$8] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$8] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$24] (t=11, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [$1] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$9] -> [SOUTH, RED] (t=12, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$2], [$9] -> [SOUTH, RED] (t=12, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [$8], [EAST, RED], [$0] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$16] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: ADD, [$0], [#1] -> [$0], [$9] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$16] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [EAST, RED], [WEST, RED], [$17], [$10], [NORTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [EAST, RED], [WEST, RED], [$10], [NORTH, RED] (t=5, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { // ASM-NEXT: GEP, [$0], [$8] -> [SOUTH, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$17] -> [EAST, RED] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$9], [EAST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$16], [$24] -> [$8], [$1] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=8, inv_iters=0) +// ASM-NEXT: PHI_START, [$16], [$1] -> [$1] (t=8, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { // ASM-NEXT: NOT, [WEST, RED] -> [SOUTH, RED], [$9], [NORTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$10] -> [$1] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$10] -> [$2] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$9], [$16] -> [NORTH, RED] (t=11, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [NORTH, RED] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=4, inv_iters=0) @@ -583,26 +573,18 @@ // ASM-NEXT: GEP, [arg1], [$0] -> [SOUTH, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: NOT, [WEST, RED] -> [WEST, RED], [$16], [SOUTH, RED], [EAST, RED], [$0], [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: NOT, [WEST, RED] -> [WEST, RED], [$16], [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { // ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: ADD, [SOUTH, RED], [$0] -> [$9], [$0] (t=9, inv_iters=0) +// ASM-NEXT: ADD, [SOUTH, RED], [$0] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) // ASM: PE(0,2): // ASM-NEXT: { // ASM-NEXT: RETURN_VOID, [SOUTH, RED] (t=10, inv_iters=0) @@ -622,23 +604,23 @@ // ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$8] (t=11, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$17] (t=12, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$10] (t=12, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [$8], [$0] (t=6, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$17] -> [SOUTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$9] (t=7, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$10] -> [SOUTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$8], [$16] -> [$0], [WEST, RED] (t=8, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$9] -> [$0], [WEST, RED] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$9] -> [$16] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$9] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) diff --git a/test/e2e/histogram/histogram_kernel.mlir b/test/e2e/histogram/histogram_kernel.mlir index a36bd3d1..1c8cd9b6 100644 --- a/test/e2e/histogram/histogram_kernel.mlir +++ b/test/e2e/histogram/histogram_kernel.mlir @@ -25,47 +25,47 @@ -// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 6 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = neura.reserve {dfg_id = 1 : i32} : !neura.data -// MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %3 = neura.phi_start %2, %1 {dfg_id = 4 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %4 = "neura.data_mov"(%3) {dfg_id = 6 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %5 = "neura.gep"(%4) <{operandSegmentSizes = array}> {dfg_id = 8 : i32, lhs_value = "%arg0", mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %6 = "neura.data_mov"(%5) {dfg_id = 11 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = "neura.load"(%6) {dfg_id = 13 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.mul"(%8) {dfg_id = 20 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 5 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.add"(%10) {dfg_id = 26 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = -5 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%11) {dfg_id = 28 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = "neura.div"(%12) {dfg_id = 29 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 18 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 30 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = neura.sext %14 {dfg_id = 31 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 32 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %17 = "neura.gep"(%16) <{operandSegmentSizes = array}> {dfg_id = 33 : i32, lhs_value = "%arg1", mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.data_mov"(%17) {dfg_id = 35 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %19 = "neura.load"(%18) {dfg_id = 36 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 37 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = "neura.add"(%20) {dfg_id = 38 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%21) {dfg_id = 39 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = "neura.data_mov"(%17) {dfg_id = 34 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%22, %23) {dfg_id = 40 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %24 = "neura.data_mov"(%3) {dfg_id = 5 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.add"(%24) {dfg_id = 7 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 10 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "eq"}> {dfg_id = 12 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 20 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%27) {dfg_id = 16 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.not"(%28) {dfg_id = 19 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = "neura.data_mov"(%25) {dfg_id = 9 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%29) {dfg_id = 22 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = neura.grant_predicate %30, %31 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %32 -> %1 {dfg_id = 27 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %33 = "neura.data_mov"(%27) {dfg_id = 14 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 15 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 3 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 289 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 289 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 289 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = neura.grant_predicate %33, %34 {dfg_id = 18 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 21 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %36 : !neura.data {dfg_id = 24 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} +// MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %3 = neura.phi_start %2, %1 {dfg_id = 4 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %4 = "neura.data_mov"(%3) {dfg_id = 6 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %5 = "neura.gep"(%4) <{operandSegmentSizes = array}> {dfg_id = 8 : i32, lhs_value = "%arg0", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %6 = "neura.data_mov"(%5) {dfg_id = 11 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = "neura.load"(%6) {dfg_id = 13 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.mul"(%8) {dfg_id = 20 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = 5 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.add"(%10) {dfg_id = 26 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = -5 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%11) {dfg_id = 28 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = "neura.div"(%12) {dfg_id = 29 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = 18 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 30 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = neura.sext %14 {dfg_id = 31 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 32 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %17 = "neura.gep"(%16) <{operandSegmentSizes = array}> {dfg_id = 33 : i32, lhs_value = "%arg1", mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.data_mov"(%17) {dfg_id = 35 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = "neura.load"(%18) {dfg_id = 36 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 37 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = "neura.add"(%20) {dfg_id = 38 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 0 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%21) {dfg_id = 39 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.data_mov"(%17) {dfg_id = 34 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%22, %23) {dfg_id = 40 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %24 = "neura.data_mov"(%3) {dfg_id = 5 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.add"(%24) {dfg_id = 7 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 10 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "eq"}> {dfg_id = 12 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 20 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%27) {dfg_id = 16 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.not"(%28) {dfg_id = 19 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = "neura.data_mov"(%25) {dfg_id = 9 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%29) {dfg_id = 22 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = neura.grant_predicate %30, %31 {dfg_id = 25 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %32 -> %1 {dfg_id = 27 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %33 = "neura.data_mov"(%27) {dfg_id = 14 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 15 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = neura.grant_predicate %33, %34 {dfg_id = 18 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 21 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %36 : !neura.data {dfg_id = 24 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 2 : i32} // MAPPING-NEXT: } // MAPPING-NEXT: } @@ -73,205 +73,234 @@ // YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 6 +// YAML-NEXT: compiled_ii: 5 // YAML-NEXT: cores: -// YAML-NEXT: - column: 0 +// YAML-NEXT: - column: 2 // YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "0" +// YAML-NEXT: core_id: "2" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 36 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 2 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 26 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: id: 38 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 2 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#-5" +// YAML-NEXT: - operand: "#1" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 27 -// YAML-NEXT: time_step: 6 +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 40 +// YAML-NEXT: time_step: 12 +// YAML-NEXT: invalid_iterations: 2 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "SEXT" +// YAML-NEXT: id: 31 +// YAML-NEXT: time_step: 8 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 4 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 33 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "arg1" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "3" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 8 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "MUL" +// YAML-NEXT: id: 20 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#5" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 13 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 26 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#-5" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "DIV" +// YAML-NEXT: id: 29 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#5" +// YAML-NEXT: - operand: "#18" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 13 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 // YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "4" +// YAML-NEXT: core_id: "6" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DIV" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 18 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 2 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#18" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 31 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "RETURN_VOID" +// YAML-NEXT: id: 24 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 2 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 33 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 14 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "7" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 36 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 110001 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "10" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 38 -// YAML-NEXT: time_step: 10 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 25 +// YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 40 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 4 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "ADD" @@ -279,7 +308,7 @@ // YAML-NEXT: time_step: 2 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "#1" // YAML-NEXT: color: "RED" @@ -302,9 +331,7 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$9" +// YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: @@ -318,122 +345,96 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 150000 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$9" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 25 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 +// YAML-NEXT: - column: 3 // YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" +// YAML-NEXT: core_id: "11" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 14 -// YAML-NEXT: time_step: 4 +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 0 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "#0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 18 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 8 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// ASM: # Compiled II: 6 -// ASM: PE(0,0): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED] (t=0, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: ADD, [EAST, RED], [#-5] -> [NORTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM: PE(1,0): +// ASM: # Compiled II: 5 +// ASM: PE(2,0): // ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$0] (t=6, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [$0] (t=10, inv_iters=2) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [$0], [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0] (t=11, inv_iters=2) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg0], [$0] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: STORE, [$0], [$8] (t=12, inv_iters=2) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: SEXT, [EAST, RED] -> [$0] (t=8, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [#5] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: GEP, [arg1], [$0] -> [$0], [$8] (t=9, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(0,1): +// ASM: PE(3,0): // ASM-NEXT: { -// ASM-NEXT: DIV, [SOUTH, RED], [#18] -> [$0] (t=6, inv_iters=1) +// ASM-NEXT: MUL, [$0], [#5] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: SEXT, [$0] -> [$0] (t=7, inv_iters=1) +// ASM-NEXT: ADD, [$0], [#-5] -> [$0] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [$0], [$8] (t=8, inv_iters=1) +// ASM-NEXT: DIV, [$0], [#18] -> [WEST, RED] (t=7, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$0] (t=9, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0] (t=10, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [$1] (t=10, inv_iters=2) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [$1] (t=11, inv_iters=2) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(3,1): // ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$8] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM: PE(1,1): +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: ADD, [SOUTH, RED], [#1] -> [$0], [$8] (t=2, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [EAST, RED], [$0] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#20] -> [$0], [NORTH, RED], [$9] (t=3, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#20] -> [$0], [SOUTH, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: NOT, [$0] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$9] -> [NORTH, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(3,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [SOUTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM: PE(1,2): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [$8] (t=10, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=0, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=5, inv_iters=0) -// ASM-NEXT: RETURN_VOID, [$8] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: GEP, [arg0], [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) diff --git a/test/e2e/relu/relu_kernel.mlir b/test/e2e/relu/relu_kernel.mlir index 8fc05121..e998d1b2 100644 --- a/test/e2e/relu/relu_kernel.mlir +++ b/test/e2e/relu/relu_kernel.mlir @@ -32,7 +32,7 @@ // // Check the mapped MLIR contains key operations with full statements. // RUN: FileCheck %s --input-file=%t-mapping.mlir -check-prefix=MAPPING -// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data @@ -66,15 +66,15 @@ // MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 33 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 37 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 40 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 12 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 32 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 4 : i32}, {id = 31 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 36 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %33 -> %2 {dfg_id = 39 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 12 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 32 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 36 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %33 -> %2 {dfg_id = 39 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data // MAPPING-NEXT: %34 = "neura.data_mov"(%25) {dfg_id = 23 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 3 : i32}, {id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 28 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%36) {dfg_id = 31 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %37 : !neura.data {dfg_id = 35 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 3 : i32}]} +// MAPPING-NEXT: %37 = "neura.data_mov"(%36) {dfg_id = 31 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %37 : !neura.data {dfg_id = 35 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} // MAPPING-NEXT: } // MAPPING-NEXT: } @@ -279,25 +279,15 @@ // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 120000 -// YAML-NEXT: time_step: 5 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 36 +// YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 39 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: @@ -346,10 +336,10 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" // YAML-NEXT: id: 130001 @@ -361,24 +351,34 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 36 -// YAML-NEXT: time_step: 6 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 320001 +// YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "RETURN_VOID" +// YAML-NEXT: id: 35 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" // YAML-NEXT: id: 23 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" // ASM: # Compiled II: 5 // ASM: PE(1,0): @@ -425,11 +425,8 @@ // ASM-NEXT: } (idx_per_ii=3) // ASM: PE(0,2): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$8] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) @@ -438,11 +435,12 @@ // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(1,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [NORTH, RED] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [$0] (t=5, inv_iters=1) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [EAST, RED] -> [WEST, RED] (t=6, inv_iters=1) +// ASM-NEXT: RETURN_VOID, [$0] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { // ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=4, inv_iters=0) @@ -450,7 +448,6 @@ // ASM: PE(2,2): // ASM-NEXT: { // ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$9] -> [WEST, RED] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [EAST, RED], [SOUTH, RED], [$0] (t=1, inv_iters=0) @@ -459,11 +456,10 @@ // ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED], [$9] (t=3, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0], [$9] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$9] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: NOT, [$0] -> [$0], [WEST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM: PE(3,2): // ASM-NEXT: { @@ -472,7 +468,3 @@ // ASM-NEXT: { // ASM-NEXT: GEP, [arg0], [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(1,3): -// ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [SOUTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) diff --git a/test/e2e/spmv/spmv_kernel.mlir b/test/e2e/spmv/spmv_kernel.mlir index e58fa206..bc0908a2 100644 --- a/test/e2e/spmv/spmv_kernel.mlir +++ b/test/e2e/spmv/spmv_kernel.mlir @@ -22,310 +22,309 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 15 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 9 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 9 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 12 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %4 = "neura.icmp"(%3) <{cmpType = "sgt"}> {dfg_id = 14 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %5 = "neura.data_mov"(%4) {dfg_id = 16 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %6 = "neura.grant_once"(%5) {dfg_id = 18 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = "neura.data_mov"(%4) {dfg_id = 15 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 304 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 304 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 304 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 304 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 304 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 304 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 304 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 304 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 304 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 304 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 304 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %8 = "neura.not"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 19 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%6) {dfg_id = 22 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 26 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%2) {dfg_id = 13 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.data_mov"(%6) {dfg_id = 21 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%6) {dfg_id = 20 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 23 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 360 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 360 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 360 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 360 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 360 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 360 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 360 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 360 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 360 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 360 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 360 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 360 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.not"(%17) {dfg_id = 24 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %19 = "neura.data_mov"(%10) {dfg_id = 27 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = "neura.data_mov"(%18) {dfg_id = 28 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = neura.grant_predicate %19, %20 {dfg_id = 34 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%13) {dfg_id = 33 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = neura.zext %22 {dfg_id = 36 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 42 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.and"(%24) {dfg_id = 46 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%13) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "ult"}> {dfg_id = 35 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 4 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%16) {dfg_id = 31 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 1000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 1000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 1008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 45 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%16) {dfg_id = 30 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 11 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 9 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 4 : i32}, {id = 17 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 5 : i32}, {id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 6 : i32}, {id = 17 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 7 : i32}, {id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 8 : i32}, {id = 17 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 9 : i32}, {id = 17 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 10 : i32}, {id = 17 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 11 : i32}, {id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 12 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %4 = "neura.icmp"(%3) <{cmpType = "sgt"}> {dfg_id = 14 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %5 = "neura.data_mov"(%4) {dfg_id = 16 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %6 = "neura.grant_once"(%5) {dfg_id = 18 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = "neura.data_mov"(%4) {dfg_id = 15 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 4004 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 2 : i32}, {id = 4004 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 3 : i32}, {id = 4004 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 4 : i32}, {id = 4004 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 5 : i32}, {id = 4004 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 6 : i32}, {id = 4004 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 7 : i32}, {id = 4004 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 8 : i32}, {id = 4004 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 9 : i32}, {id = 4004 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 10 : i32}, {id = 4004 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 4004 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 4004 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 4004 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 4004 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}, {id = 4004 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %8 = "neura.not"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 19 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%6) {dfg_id = 22 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 26 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%2) {dfg_id = 13 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.data_mov"(%6) {dfg_id = 21 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 25 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%6) {dfg_id = 20 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 2 : i32}, {id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 2 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.not"(%17) {dfg_id = 24 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = "neura.data_mov"(%10) {dfg_id = 27 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = "neura.data_mov"(%18) {dfg_id = 28 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 4009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 4009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = neura.grant_predicate %19, %20 {dfg_id = 34 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%13) {dfg_id = 33 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = neura.zext %22 {dfg_id = 36 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 42 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 1000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 1000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.and"(%24) {dfg_id = 46 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%13) {dfg_id = 32 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "ult"}> {dfg_id = 35 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 4 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%16) {dfg_id = 31 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 45 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%16) {dfg_id = 30 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 16 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 44 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 38 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.not"(%34) {dfg_id = 43 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%23) {dfg_id = 41 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%35) {dfg_id = 48 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 38 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.not"(%34) {dfg_id = 43 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%23) {dfg_id = 41 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%35) {dfg_id = 48 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %38 = neura.grant_predicate %36, %37 {dfg_id = 54 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %39 = "neura.data_mov"(%16) {dfg_id = 29 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %40 = "neura.data_mov"(%35) {dfg_id = 47 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %39 = "neura.data_mov"(%16) {dfg_id = 29 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %40 = "neura.data_mov"(%35) {dfg_id = 47 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %41 = neura.grant_predicate %39, %40 {dfg_id = 53 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %42 = "neura.data_mov"(%38) {dfg_id = 59 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %43 = "neura.and"(%42) {dfg_id = 66 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 2147483644 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %44 = neura.reserve {dfg_id = 3 : i32} : !neura.data -// MAPPING-NEXT: %45 = "neura.data_mov"(%41) {dfg_id = 58 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %45 = "neura.data_mov"(%41) {dfg_id = 58 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 4002 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 4002 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 4002 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 4002 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %46 = neura.phi_start %45, %44 {dfg_id = 65 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %47 = neura.reserve {dfg_id = 4 : i32} : !neura.data -// MAPPING-NEXT: %48 = "neura.data_mov"(%43) {dfg_id = 79 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %49 = neura.phi_start %48, %47 {dfg_id = 92 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %48 = "neura.data_mov"(%43) {dfg_id = 79 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %49 = neura.phi_start %48, %47 {dfg_id = 92 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %50 = neura.reserve {dfg_id = 5 : i32} : !neura.data // MAPPING-NEXT: %51 = "neura.data_mov"(%41) {dfg_id = 57 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %52 = neura.phi_start %51, %50 {dfg_id = 64 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %53 = neura.reserve {dfg_id = 6 : i32} : !neura.data -// MAPPING-NEXT: %54 = "neura.data_mov"(%41) {dfg_id = 56 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %54 = "neura.data_mov"(%41) {dfg_id = 56 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %55 = neura.phi_start %54, %53 {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %56 = "neura.data_mov"(%55) {dfg_id = 75 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 20 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %57 = "neura.gep"(%56) <{operandSegmentSizes = array}> {dfg_id = 90 : i32, lhs_value = "%arg1", mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%57) {dfg_id = 107 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 19 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %59 = "neura.load"(%58) {dfg_id = 124 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %60 = "neura.data_mov"(%55) {dfg_id = 74 : i32, mapping_locs = [{id = 184 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 8 : i32}, {id = 184 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 184 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 184 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 184 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 184 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %61 = "neura.gep"(%60) <{operandSegmentSizes = array}> {dfg_id = 89 : i32, lhs_value = "%arg2", mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %62 = "neura.data_mov"(%61) {dfg_id = 106 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %63 = "neura.load"(%62) {dfg_id = 123 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %64 = "neura.data_mov"(%63) {dfg_id = 137 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %65 = neura.sext %64 {dfg_id = 154 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%65) {dfg_id = 168 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.gep"(%66) <{operandSegmentSizes = array}> {dfg_id = 182 : i32, lhs_value = "%arg4", mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %68 = "neura.data_mov"(%67) {dfg_id = 197 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %69 = "neura.load"(%68) {dfg_id = 211 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 224 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %71 = "neura.data_mov"(%59) {dfg_id = 138 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.mul"(%70, %71) {dfg_id = 233 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %73 = "neura.data_mov"(%55) {dfg_id = 73 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4024 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 9 : i32}, {id = 4024 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 4024 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 4024 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 4024 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 4024 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %74 = "neura.gep"(%73) <{operandSegmentSizes = array}> {dfg_id = 88 : i32, lhs_value = "%arg3", mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %75 = "neura.data_mov"(%74) {dfg_id = 105 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %76 = "neura.load"(%75) {dfg_id = 122 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %77 = "neura.data_mov"(%76) {dfg_id = 136 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %78 = neura.sext %77 {dfg_id = 153 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %79 = "neura.data_mov"(%78) {dfg_id = 167 : i32, mapping_locs = [{id = 12001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 12001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = "neura.gep"(%79) <{operandSegmentSizes = array}> {dfg_id = 181 : i32, lhs_value = "%arg5", mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%80) {dfg_id = 196 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.load"(%81) {dfg_id = 210 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = "neura.data_mov"(%82) {dfg_id = 223 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %84 = "neura.data_mov"(%72) {dfg_id = 242 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %85 = "neura.add"(%83, %84) {dfg_id = 251 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%85) {dfg_id = 260 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 26 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %87 = "neura.data_mov"(%80) {dfg_id = 195 : i32, mapping_locs = [{id = 12016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 12016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 12016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 12016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 12016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 12016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 12016 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 270 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %88 = "neura.data_mov"(%55) {dfg_id = 72 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %89 = "neura.or"(%88) {dfg_id = 87 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 104 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 416 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %91 = "neura.gep"(%90) <{operandSegmentSizes = array}> {dfg_id = 121 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %92 = "neura.data_mov"(%91) {dfg_id = 135 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 12000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %93 = "neura.load"(%92) {dfg_id = 152 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 103 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %95 = "neura.gep"(%94) <{operandSegmentSizes = array}> {dfg_id = 120 : i32, lhs_value = "%arg2", mapping_locs = [{id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %96 = "neura.data_mov"(%95) {dfg_id = 134 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %97 = "neura.load"(%96) {dfg_id = 151 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %98 = "neura.data_mov"(%97) {dfg_id = 165 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %99 = neura.sext %98 {dfg_id = 180 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 194 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 12000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 209 : i32, lhs_value = "%arg4", mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 222 : i32, mapping_locs = [{id = 12008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 12008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 12008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %103 = "neura.load"(%102) {dfg_id = 232 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %104 = "neura.data_mov"(%103) {dfg_id = 241 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 12000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %105 = "neura.data_mov"(%93) {dfg_id = 166 : i32, mapping_locs = [{id = 12009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 12009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 12009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %106 = "neura.mul"(%104, %105) {dfg_id = 250 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %107 = "neura.data_mov"(%89) {dfg_id = 102 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %108 = "neura.gep"(%107) <{operandSegmentSizes = array}> {dfg_id = 119 : i32, lhs_value = "%arg3", mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %109 = "neura.data_mov"(%108) {dfg_id = 133 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %110 = "neura.load"(%109) {dfg_id = 150 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %111 = "neura.data_mov"(%110) {dfg_id = 164 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %112 = neura.sext %111 {dfg_id = 179 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 193 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %114 = "neura.gep"(%113) <{operandSegmentSizes = array}> {dfg_id = 208 : i32, lhs_value = "%arg5", mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 221 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 8016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 8016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = "neura.load"(%115) {dfg_id = 231 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %117 = "neura.data_mov"(%116) {dfg_id = 240 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %118 = "neura.data_mov"(%106) {dfg_id = 259 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %119 = "neura.add"(%117, %118) {dfg_id = 269 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %120 = "neura.data_mov"(%119) {dfg_id = 277 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %121 = "neura.data_mov"(%114) {dfg_id = 220 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8017 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 8017 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}, {id = 8017 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 23 : i32}, {id = 8017 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 24 : i32}, {id = 8017 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%120, %121) {dfg_id = 286 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %122 = "neura.data_mov"(%55) {dfg_id = 71 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %123 = "neura.or"(%122) {dfg_id = 86 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 2 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %124 = "neura.data_mov"(%123) {dfg_id = 101 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 23 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 352 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 352 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %125 = "neura.gep"(%124) <{operandSegmentSizes = array}> {dfg_id = 118 : i32, lhs_value = "%arg1", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 132 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %127 = "neura.load"(%126) {dfg_id = 149 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %128 = "neura.data_mov"(%123) {dfg_id = 100 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %129 = "neura.gep"(%128) <{operandSegmentSizes = array}> {dfg_id = 117 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %130 = "neura.data_mov"(%129) {dfg_id = 131 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 148 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %132 = "neura.data_mov"(%131) {dfg_id = 162 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %133 = neura.sext %132 {dfg_id = 178 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %134 = "neura.data_mov"(%133) {dfg_id = 192 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %135 = "neura.gep"(%134) <{operandSegmentSizes = array}> {dfg_id = 207 : i32, lhs_value = "%arg4", mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %136 = "neura.data_mov"(%135) {dfg_id = 219 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %137 = "neura.load"(%136) {dfg_id = 230 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %138 = "neura.data_mov"(%137) {dfg_id = 239 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %139 = "neura.data_mov"(%127) {dfg_id = 163 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %140 = "neura.mul"(%138, %139) {dfg_id = 249 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %141 = "neura.data_mov"(%123) {dfg_id = 99 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %142 = "neura.gep"(%141) <{operandSegmentSizes = array}> {dfg_id = 116 : i32, lhs_value = "%arg3", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %143 = "neura.data_mov"(%142) {dfg_id = 130 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 22 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 147 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %145 = "neura.data_mov"(%144) {dfg_id = 161 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %146 = neura.sext %145 {dfg_id = 177 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %147 = "neura.data_mov"(%146) {dfg_id = 191 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 206 : i32, lhs_value = "%arg5", mapping_locs = [{id = 7 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 218 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 2016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 229 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %151 = "neura.data_mov"(%150) {dfg_id = 238 : i32, mapping_locs = [{id = 2016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 2016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %152 = "neura.data_mov"(%140) {dfg_id = 258 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 2024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 2024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %153 = "neura.add"(%151, %152) {dfg_id = 268 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %154 = "neura.data_mov"(%153) {dfg_id = 276 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %155 = "neura.data_mov"(%148) {dfg_id = 217 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 21 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 19 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 2008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%154, %155) {dfg_id = 285 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %156 = "neura.data_mov"(%55) {dfg_id = 70 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 1009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 1009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 1009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %157 = "neura.or"(%156) {dfg_id = 85 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %158 = "neura.data_mov"(%157) {dfg_id = 98 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 14 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 18 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %159 = "neura.gep"(%158) <{operandSegmentSizes = array}> {dfg_id = 115 : i32, lhs_value = "%arg1", mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %160 = "neura.data_mov"(%159) {dfg_id = 129 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 3008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 3008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %161 = "neura.load"(%160) {dfg_id = 146 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %162 = "neura.data_mov"(%157) {dfg_id = 97 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %163 = "neura.gep"(%162) <{operandSegmentSizes = array}> {dfg_id = 114 : i32, lhs_value = "%arg2", mapping_locs = [{id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %164 = "neura.data_mov"(%163) {dfg_id = 128 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %165 = "neura.load"(%164) {dfg_id = 145 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %166 = "neura.data_mov"(%165) {dfg_id = 159 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %167 = neura.sext %166 {dfg_id = 176 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %168 = "neura.data_mov"(%167) {dfg_id = 190 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %169 = "neura.gep"(%168) <{operandSegmentSizes = array}> {dfg_id = 205 : i32, lhs_value = "%arg4", mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %170 = "neura.data_mov"(%169) {dfg_id = 216 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %171 = "neura.load"(%170) {dfg_id = 228 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 237 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 160 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %174 = "neura.mul"(%172, %173) {dfg_id = 248 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %175 = "neura.data_mov"(%157) {dfg_id = 96 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %176 = "neura.gep"(%175) <{operandSegmentSizes = array}> {dfg_id = 113 : i32, lhs_value = "%arg3", mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %177 = "neura.data_mov"(%176) {dfg_id = 127 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %178 = "neura.load"(%177) {dfg_id = 144 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %179 = "neura.data_mov"(%178) {dfg_id = 158 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %180 = neura.sext %179 {dfg_id = 175 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 189 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %182 = "neura.gep"(%181) <{operandSegmentSizes = array}> {dfg_id = 204 : i32, lhs_value = "%arg5", mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %183 = "neura.data_mov"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 3009 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 3009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 3009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 3009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %184 = "neura.load"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %185 = "neura.data_mov"(%184) {dfg_id = 236 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %186 = "neura.data_mov"(%174) {dfg_id = 257 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 3008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %187 = "neura.add"(%185, %186) {dfg_id = 267 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %188 = "neura.data_mov"(%187) {dfg_id = 275 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %189 = "neura.data_mov"(%182) {dfg_id = 214 : i32, mapping_locs = [{id = 3016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 3016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 3016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 3016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 3016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 3016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%188, %189) {dfg_id = 284 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %190 = "neura.data_mov"(%55) {dfg_id = 69 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %191 = "neura.add"(%190) {dfg_id = 84 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %56 = "neura.data_mov"(%55) {dfg_id = 75 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %57 = "neura.gep"(%56) <{operandSegmentSizes = array}> {dfg_id = 90 : i32, lhs_value = "%arg1", mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%57) {dfg_id = 107 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 26 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 12000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %59 = "neura.load"(%58) {dfg_id = 124 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %60 = "neura.data_mov"(%55) {dfg_id = 74 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %61 = "neura.gep"(%60) <{operandSegmentSizes = array}> {dfg_id = 89 : i32, lhs_value = "%arg2", mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %62 = "neura.data_mov"(%61) {dfg_id = 106 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %63 = "neura.load"(%62) {dfg_id = 123 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %64 = "neura.data_mov"(%63) {dfg_id = 137 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %65 = neura.sext %64 {dfg_id = 154 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%65) {dfg_id = 168 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 12000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.gep"(%66) <{operandSegmentSizes = array}> {dfg_id = 182 : i32, lhs_value = "%arg4", mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %68 = "neura.data_mov"(%67) {dfg_id = 197 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %69 = "neura.load"(%68) {dfg_id = 211 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 224 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %71 = "neura.data_mov"(%59) {dfg_id = 138 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.mul"(%70, %71) {dfg_id = 233 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %73 = "neura.data_mov"(%55) {dfg_id = 73 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %74 = "neura.gep"(%73) <{operandSegmentSizes = array}> {dfg_id = 88 : i32, lhs_value = "%arg3", mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %75 = "neura.data_mov"(%74) {dfg_id = 105 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 8000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %76 = "neura.load"(%75) {dfg_id = 122 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %77 = "neura.data_mov"(%76) {dfg_id = 136 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %78 = neura.sext %77 {dfg_id = 153 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %79 = "neura.data_mov"(%78) {dfg_id = 167 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = "neura.gep"(%79) <{operandSegmentSizes = array}> {dfg_id = 181 : i32, lhs_value = "%arg5", mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%80) {dfg_id = 196 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 27 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 8016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.load"(%81) {dfg_id = 210 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = "neura.data_mov"(%82) {dfg_id = 223 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %84 = "neura.data_mov"(%72) {dfg_id = 242 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %85 = "neura.add"(%83, %84) {dfg_id = 251 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%85) {dfg_id = 260 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %87 = "neura.data_mov"(%80) {dfg_id = 195 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12010 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 12010 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 12010 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 12010 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 12010 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 270 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %88 = "neura.data_mov"(%55) {dfg_id = 72 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 192 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %89 = "neura.or"(%88) {dfg_id = 87 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 104 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 224 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 224 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %91 = "neura.gep"(%90) <{operandSegmentSizes = array}> {dfg_id = 121 : i32, lhs_value = "%arg1", mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %92 = "neura.data_mov"(%91) {dfg_id = 135 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 3008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 3008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %93 = "neura.load"(%92) {dfg_id = 152 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 103 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %95 = "neura.gep"(%94) <{operandSegmentSizes = array}> {dfg_id = 120 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %96 = "neura.data_mov"(%95) {dfg_id = 134 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %97 = "neura.load"(%96) {dfg_id = 151 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %98 = "neura.data_mov"(%97) {dfg_id = 165 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 2000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %99 = neura.sext %98 {dfg_id = 180 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 194 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 209 : i32, lhs_value = "%arg4", mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 222 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %103 = "neura.load"(%102) {dfg_id = 232 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %104 = "neura.data_mov"(%103) {dfg_id = 241 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %105 = "neura.data_mov"(%93) {dfg_id = 166 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %106 = "neura.mul"(%104, %105) {dfg_id = 250 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %107 = "neura.data_mov"(%89) {dfg_id = 102 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %108 = "neura.gep"(%107) <{operandSegmentSizes = array}> {dfg_id = 119 : i32, lhs_value = "%arg3", mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %109 = "neura.data_mov"(%108) {dfg_id = 133 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 27 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %110 = "neura.load"(%109) {dfg_id = 150 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %111 = "neura.data_mov"(%110) {dfg_id = 164 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %112 = neura.sext %111 {dfg_id = 179 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 193 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %114 = "neura.gep"(%113) <{operandSegmentSizes = array}> {dfg_id = 208 : i32, lhs_value = "%arg5", mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 221 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 25 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = "neura.load"(%115) {dfg_id = 231 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %117 = "neura.data_mov"(%116) {dfg_id = 240 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %118 = "neura.data_mov"(%106) {dfg_id = 259 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 21 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %119 = "neura.add"(%117, %118) {dfg_id = 269 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %120 = "neura.data_mov"(%119) {dfg_id = 277 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %121 = "neura.data_mov"(%114) {dfg_id = 220 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 29 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 2000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%120, %121) {dfg_id = 286 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %122 = "neura.data_mov"(%55) {dfg_id = 71 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4003 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 4003 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 4003 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 4003 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %123 = "neura.or"(%122) {dfg_id = 86 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 2 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %124 = "neura.data_mov"(%123) {dfg_id = 101 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 30 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %125 = "neura.gep"(%124) <{operandSegmentSizes = array}> {dfg_id = 118 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 132 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 12001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 12001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 12001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %127 = "neura.load"(%126) {dfg_id = 149 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %128 = "neura.data_mov"(%123) {dfg_id = 100 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %129 = "neura.gep"(%128) <{operandSegmentSizes = array}> {dfg_id = 117 : i32, lhs_value = "%arg2", mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %130 = "neura.data_mov"(%129) {dfg_id = 131 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 148 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %132 = "neura.data_mov"(%131) {dfg_id = 162 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %133 = neura.sext %132 {dfg_id = 178 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %134 = "neura.data_mov"(%133) {dfg_id = 192 : i32, mapping_locs = [{id = 41 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %135 = "neura.gep"(%134) <{operandSegmentSizes = array}> {dfg_id = 207 : i32, lhs_value = "%arg4", mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %136 = "neura.data_mov"(%135) {dfg_id = 219 : i32, mapping_locs = [{id = 43 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 40 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 12008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 12008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 12008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %137 = "neura.load"(%136) {dfg_id = 230 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %138 = "neura.data_mov"(%137) {dfg_id = 239 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %139 = "neura.data_mov"(%127) {dfg_id = 163 : i32, mapping_locs = [{id = 12009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 12009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %140 = "neura.mul"(%138, %139) {dfg_id = 249 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %141 = "neura.data_mov"(%123) {dfg_id = 99 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %142 = "neura.gep"(%141) <{operandSegmentSizes = array}> {dfg_id = 116 : i32, lhs_value = "%arg3", mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %143 = "neura.data_mov"(%142) {dfg_id = 130 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 147 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %145 = "neura.data_mov"(%144) {dfg_id = 161 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %146 = neura.sext %145 {dfg_id = 177 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %147 = "neura.data_mov"(%146) {dfg_id = 191 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 206 : i32, lhs_value = "%arg5", mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 218 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 3001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 3001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 3001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 229 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %151 = "neura.data_mov"(%150) {dfg_id = 238 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 23 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 37 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %152 = "neura.data_mov"(%140) {dfg_id = 258 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 41 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 44 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %153 = "neura.add"(%151, %152) {dfg_id = 268 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 3 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %154 = "neura.data_mov"(%153) {dfg_id = 276 : i32, mapping_locs = [{id = 47 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 26 : i32}, {id = 36 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 27 : i32}, {id = 22 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 28 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %155 = "neura.data_mov"(%148) {dfg_id = 217 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 3001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 3001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 3001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 3001 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 3001 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 3001 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}, {id = 3001 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 26 : i32}, {id = 3001 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 27 : i32}, {id = 3001 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 28 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%154, %155) {dfg_id = 285 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 29 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %156 = "neura.data_mov"(%55) {dfg_id = 70 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %157 = "neura.or"(%156) {dfg_id = 85 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %158 = "neura.data_mov"(%157) {dfg_id = 98 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %159 = "neura.gep"(%158) <{operandSegmentSizes = array}> {dfg_id = 115 : i32, lhs_value = "%arg1", mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %160 = "neura.data_mov"(%159) {dfg_id = 129 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %161 = "neura.load"(%160) {dfg_id = 146 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %162 = "neura.data_mov"(%157) {dfg_id = 97 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %163 = "neura.gep"(%162) <{operandSegmentSizes = array}> {dfg_id = 114 : i32, lhs_value = "%arg2", mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %164 = "neura.data_mov"(%163) {dfg_id = 128 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 19 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %165 = "neura.load"(%164) {dfg_id = 145 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %166 = "neura.data_mov"(%165) {dfg_id = 159 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %167 = neura.sext %166 {dfg_id = 176 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %168 = "neura.data_mov"(%167) {dfg_id = 190 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %169 = "neura.gep"(%168) <{operandSegmentSizes = array}> {dfg_id = 205 : i32, lhs_value = "%arg4", mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %170 = "neura.data_mov"(%169) {dfg_id = 216 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %171 = "neura.load"(%170) {dfg_id = 228 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 237 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 2008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 160 : i32, mapping_locs = [{id = 2016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 2016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 2016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %174 = "neura.mul"(%172, %173) {dfg_id = 248 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %175 = "neura.data_mov"(%157) {dfg_id = 96 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %176 = "neura.gep"(%175) <{operandSegmentSizes = array}> {dfg_id = 113 : i32, lhs_value = "%arg3", mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %177 = "neura.data_mov"(%176) {dfg_id = 127 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %178 = "neura.load"(%177) {dfg_id = 144 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %179 = "neura.data_mov"(%178) {dfg_id = 158 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 416 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %180 = neura.sext %179 {dfg_id = 175 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 189 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %182 = "neura.gep"(%181) <{operandSegmentSizes = array}> {dfg_id = 204 : i32, lhs_value = "%arg5", mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %183 = "neura.data_mov"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 25 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 11 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %184 = "neura.load"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %185 = "neura.data_mov"(%184) {dfg_id = 236 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %186 = "neura.data_mov"(%174) {dfg_id = 257 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 2008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %187 = "neura.add"(%185, %186) {dfg_id = 267 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %188 = "neura.data_mov"(%187) {dfg_id = 275 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %189 = "neura.data_mov"(%182) {dfg_id = 214 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 15 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 1001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 1001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 1001 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 1001 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 1001 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%188, %189) {dfg_id = 284 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %190 = "neura.data_mov"(%55) {dfg_id = 69 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %191 = "neura.add"(%190) {dfg_id = 84 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %192 = "neura.data_mov"(%52) {dfg_id = 76 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %193 = "neura.add"(%192) {dfg_id = 91 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %194 = "neura.data_mov"(%193) {dfg_id = 109 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %195 = "neura.data_mov"(%49) {dfg_id = 111 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %196 = "neura.icmp"(%194, %195) <{cmpType = "eq"}> {dfg_id = 125 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %197 = "neura.data_mov"(%196) {dfg_id = 141 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %198 = "neura.not"(%197) {dfg_id = 157 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %199 = "neura.data_mov"(%191) {dfg_id = 95 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 312 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 10 : i32}, {id = 312 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 312 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 312 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 312 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 312 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 312 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}, {id = 312 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 17 : i32}, {id = 312 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 18 : i32}, {id = 312 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 19 : i32}, {id = 312 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %200 = "neura.data_mov"(%198) {dfg_id = 174 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 313 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 12 : i32}, {id = 313 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 13 : i32}, {id = 313 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 14 : i32}, {id = 313 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 15 : i32}, {id = 313 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 16 : i32}, {id = 313 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 17 : i32}, {id = 313 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 18 : i32}, {id = 313 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 19 : i32}, {id = 313 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 188 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %201 -> %53 {dfg_id = 203 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %202 = "neura.data_mov"(%193) {dfg_id = 108 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %203 = "neura.data_mov"(%198) {dfg_id = 173 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %204 = neura.grant_predicate %202, %203 {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %204 -> %50 {dfg_id = 202 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 176 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 176 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 176 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 176 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 176 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %205 = "neura.data_mov"(%49) {dfg_id = 110 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %206 = "neura.data_mov"(%198) {dfg_id = 172 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %207 = neura.grant_predicate %205, %206 {dfg_id = 186 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %207 -> %47 {dfg_id = 201 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 16 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %208 = "neura.data_mov"(%46) {dfg_id = 78 : i32, mapping_locs = [{id = 4017 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 4017 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 4017 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 4017 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 4017 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}, {id = 4017 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}, {id = 4017 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 4017 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 4017 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 4017 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 4017 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = "neura.data_mov"(%198) {dfg_id = 171 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4026 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 12 : i32}, {id = 4026 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 13 : i32}, {id = 4026 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 14 : i32}, {id = 4026 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 15 : i32}, {id = 4026 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 16 : i32}, {id = 4026 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 17 : i32}, {id = 4026 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 18 : i32}, {id = 4026 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 19 : i32}, {id = 4026 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 20 : i32}, {id = 4026 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 21 : i32}, {id = 4026 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 26 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 185 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %210 -> %44 {dfg_id = 200 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}, {id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}, {id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %211 = "neura.data_mov"(%191) {dfg_id = 94 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %212 = "neura.data_mov"(%196) {dfg_id = 140 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 156 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %214 = "neura.data_mov"(%46) {dfg_id = 77 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %215 = "neura.data_mov"(%196) {dfg_id = 139 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 4016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 155 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %217 = "neura.data_mov"(%33) {dfg_id = 49 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %218 = "neura.data_mov"(%216) {dfg_id = 169 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %219 = "neura.phi"(%217, %218) {dfg_id = 183 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %220 = "neura.data_mov"(%30) {dfg_id = 50 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %221 = "neura.data_mov"(%213) {dfg_id = 170 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %222 = "neura.phi"(%220, %221) {dfg_id = 184 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %223 = "neura.data_mov"(%25) {dfg_id = 52 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %224 = "neura.icmp"(%223) <{cmpType = "eq"}> {dfg_id = 55 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %225 = "neura.data_mov"(%224) {dfg_id = 61 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 1016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 1016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 1016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 1016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 1016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 1016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 1016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 1016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 1016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 1016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 1016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %226 = "neura.data_mov"(%224) {dfg_id = 62 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1017 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 1017 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 1017 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 1017 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 1017 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}, {id = 1017 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}, {id = 1017 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 1017 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 1017 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 1017 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 68 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %228 = "neura.data_mov"(%224) {dfg_id = 60 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %229 = "neura.not"(%228) {dfg_id = 67 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %230 = "neura.data_mov"(%222) {dfg_id = 199 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %231 = "neura.data_mov"(%229) {dfg_id = 82 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 213 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %233 = "neura.data_mov"(%219) {dfg_id = 198 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %234 = "neura.data_mov"(%229) {dfg_id = 81 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 212 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %236 = "neura.data_mov"(%25) {dfg_id = 51 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4025 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 10 : i32}, {id = 4025 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 11 : i32}, {id = 4025 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 12 : i32}, {id = 4025 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 13 : i32}, {id = 4025 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 14 : i32}, {id = 4025 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 15 : i32}, {id = 4025 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 25 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %237 = "neura.data_mov"(%229) {dfg_id = 80 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %238 = neura.grant_predicate %236, %237 {dfg_id = 93 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %194 = "neura.data_mov"(%193) {dfg_id = 109 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %195 = "neura.data_mov"(%49) {dfg_id = 111 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %196 = "neura.icmp"(%194, %195) <{cmpType = "eq"}> {dfg_id = 125 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %197 = "neura.data_mov"(%196) {dfg_id = 141 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %198 = "neura.not"(%197) {dfg_id = 157 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %199 = "neura.data_mov"(%191) {dfg_id = 95 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 33 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 193 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 193 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %200 = "neura.data_mov"(%198) {dfg_id = 174 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 201 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 201 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 201 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 201 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 201 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 201 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 201 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 201 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 201 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 188 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %201 -> %53 {dfg_id = 203 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %202 = "neura.data_mov"(%193) {dfg_id = 108 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %203 = "neura.data_mov"(%198) {dfg_id = 173 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %204 = neura.grant_predicate %202, %203 {dfg_id = 187 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %204 -> %50 {dfg_id = 202 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 160 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %205 = "neura.data_mov"(%49) {dfg_id = 110 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %206 = "neura.data_mov"(%198) {dfg_id = 172 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %207 = neura.grant_predicate %205, %206 {dfg_id = 186 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %207 -> %47 {dfg_id = 201 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %208 = "neura.data_mov"(%46) {dfg_id = 78 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = "neura.data_mov"(%198) {dfg_id = 171 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 28 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 329 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 329 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 329 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 329 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 185 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %210 -> %44 {dfg_id = 200 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 27 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 25 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 4016 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 4016 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %211 = "neura.data_mov"(%191) {dfg_id = 94 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %212 = "neura.data_mov"(%196) {dfg_id = 140 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 156 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %214 = "neura.data_mov"(%46) {dfg_id = 77 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %215 = "neura.data_mov"(%196) {dfg_id = 139 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 155 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %217 = "neura.data_mov"(%33) {dfg_id = 49 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %218 = "neura.data_mov"(%216) {dfg_id = 169 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %219 = "neura.phi"(%217, %218) {dfg_id = 183 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %220 = "neura.data_mov"(%30) {dfg_id = 50 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %221 = "neura.data_mov"(%213) {dfg_id = 170 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %222 = "neura.phi"(%220, %221) {dfg_id = 184 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %223 = "neura.data_mov"(%25) {dfg_id = 52 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %224 = "neura.icmp"(%223) <{cmpType = "eq"}> {dfg_id = 55 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %225 = "neura.data_mov"(%224) {dfg_id = 61 : i32, mapping_locs = [{id = 1008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 1008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 1008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 1008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 1008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %226 = "neura.data_mov"(%224) {dfg_id = 62 : i32, mapping_locs = [{id = 1008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 1008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 1008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 1008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 1008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 68 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %228 = "neura.data_mov"(%224) {dfg_id = 60 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %229 = "neura.not"(%228) {dfg_id = 67 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %230 = "neura.data_mov"(%222) {dfg_id = 199 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %231 = "neura.data_mov"(%229) {dfg_id = 82 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 213 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %233 = "neura.data_mov"(%219) {dfg_id = 198 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %234 = "neura.data_mov"(%229) {dfg_id = 81 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 168 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 212 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %236 = "neura.data_mov"(%25) {dfg_id = 51 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %237 = "neura.data_mov"(%229) {dfg_id = 80 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %238 = neura.grant_predicate %236, %237 {dfg_id = 93 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %239 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %240 = "neura.data_mov"(%238) {dfg_id = 112 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %241 = neura.phi_start %240, %239 {dfg_id = 126 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %240 = "neura.data_mov"(%238) {dfg_id = 112 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %241 = neura.phi_start %240, %239 {dfg_id = 126 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %242 = neura.reserve {dfg_id = 8 : i32} : !neura.data -// MAPPING-NEXT: %243 = "neura.data_mov"(%235) {dfg_id = 225 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %244 = neura.phi_start %243, %242 {dfg_id = 234 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %243 = "neura.data_mov"(%235) {dfg_id = 225 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %244 = neura.phi_start %243, %242 {dfg_id = 234 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %245 = neura.reserve {dfg_id = 9 : i32} : !neura.data -// MAPPING-NEXT: %246 = "neura.data_mov"(%232) {dfg_id = 226 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %247 = neura.phi_start %246, %245 {dfg_id = 235 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %248 = "neura.data_mov"(%247) {dfg_id = 247 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 30 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %249 = "neura.gep"(%248) <{operandSegmentSizes = array}> {dfg_id = 256 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %250 = "neura.data_mov"(%249) {dfg_id = 266 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 12001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 12001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 12001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %251 = "neura.load"(%250) {dfg_id = 274 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %252 = "neura.data_mov"(%247) {dfg_id = 246 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %253 = "neura.gep"(%252) <{operandSegmentSizes = array}> {dfg_id = 255 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %254 = "neura.data_mov"(%253) {dfg_id = 265 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %255 = "neura.load"(%254) {dfg_id = 273 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %256 = "neura.data_mov"(%255) {dfg_id = 282 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %257 = neura.sext %256 {dfg_id = 290 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %258 = "neura.data_mov"(%257) {dfg_id = 296 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %259 = "neura.gep"(%258) <{operandSegmentSizes = array}> {dfg_id = 302 : i32, lhs_value = "%arg4", mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %260 = "neura.data_mov"(%259) {dfg_id = 309 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %261 = "neura.load"(%260) {dfg_id = 312 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %262 = "neura.data_mov"(%261) {dfg_id = 314 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %263 = "neura.data_mov"(%251) {dfg_id = 283 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %264 = "neura.mul"(%262, %263) {dfg_id = 315 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %265 = "neura.data_mov"(%247) {dfg_id = 245 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %266 = "neura.gep"(%265) <{operandSegmentSizes = array}> {dfg_id = 254 : i32, lhs_value = "%arg3", mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %267 = "neura.data_mov"(%266) {dfg_id = 264 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %268 = "neura.load"(%267) {dfg_id = 272 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %269 = "neura.data_mov"(%268) {dfg_id = 281 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %270 = neura.sext %269 {dfg_id = 289 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %271 = "neura.data_mov"(%270) {dfg_id = 295 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %272 = "neura.gep"(%271) <{operandSegmentSizes = array}> {dfg_id = 301 : i32, lhs_value = "%arg5", mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %273 = "neura.data_mov"(%272) {dfg_id = 308 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 12008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 12008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 12008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %274 = "neura.load"(%273) {dfg_id = 311 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %275 = "neura.data_mov"(%274) {dfg_id = 313 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %276 = "neura.data_mov"(%264) {dfg_id = 316 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %277 = "neura.add"(%275, %276) {dfg_id = 317 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %278 = "neura.data_mov"(%277) {dfg_id = 318 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %279 = "neura.data_mov"(%272) {dfg_id = 307 : i32, mapping_locs = [{id = 8024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 20 : i32}, {id = 8024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 8024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 8024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 8024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 8024 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}, {id = 8024 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%278, %279) {dfg_id = 319 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 27 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %280 = "neura.data_mov"(%247) {dfg_id = 244 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %281 = "neura.add"(%280) {dfg_id = 253 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %282 = "neura.data_mov"(%244) {dfg_id = 243 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %283 = "neura.add"(%282) {dfg_id = 252 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %284 = "neura.data_mov"(%283) {dfg_id = 262 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %285 = "neura.data_mov"(%241) {dfg_id = 143 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %286 = "neura.icmp"(%284, %285) <{cmpType = "eq"}> {dfg_id = 271 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %287 = "neura.data_mov"(%286) {dfg_id = 280 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %288 = "neura.not"(%287) {dfg_id = 288 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %246 = "neura.data_mov"(%232) {dfg_id = 226 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %247 = neura.phi_start %246, %245 {dfg_id = 235 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %248 = "neura.data_mov"(%247) {dfg_id = 247 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 169 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 169 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 169 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 169 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %249 = "neura.gep"(%248) <{operandSegmentSizes = array}> {dfg_id = 256 : i32, lhs_value = "%arg1", mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %250 = "neura.data_mov"(%249) {dfg_id = 266 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 1001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %251 = "neura.load"(%250) {dfg_id = 274 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %252 = "neura.data_mov"(%247) {dfg_id = 246 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %253 = "neura.gep"(%252) <{operandSegmentSizes = array}> {dfg_id = 255 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %254 = "neura.data_mov"(%253) {dfg_id = 265 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %255 = "neura.load"(%254) {dfg_id = 273 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %256 = "neura.data_mov"(%255) {dfg_id = 282 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %257 = neura.sext %256 {dfg_id = 290 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %258 = "neura.data_mov"(%257) {dfg_id = 296 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %259 = "neura.gep"(%258) <{operandSegmentSizes = array}> {dfg_id = 302 : i32, lhs_value = "%arg4", mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %260 = "neura.data_mov"(%259) {dfg_id = 309 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %261 = "neura.load"(%260) {dfg_id = 312 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %262 = "neura.data_mov"(%261) {dfg_id = 314 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 2000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %263 = "neura.data_mov"(%251) {dfg_id = 283 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 2009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 2009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %264 = "neura.mul"(%262, %263) {dfg_id = 315 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %265 = "neura.data_mov"(%247) {dfg_id = 245 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %266 = "neura.gep"(%265) <{operandSegmentSizes = array}> {dfg_id = 254 : i32, lhs_value = "%arg3", mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %267 = "neura.data_mov"(%266) {dfg_id = 264 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %268 = "neura.load"(%267) {dfg_id = 272 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %269 = "neura.data_mov"(%268) {dfg_id = 281 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %270 = neura.sext %269 {dfg_id = 289 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %271 = "neura.data_mov"(%270) {dfg_id = 295 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %272 = "neura.gep"(%271) <{operandSegmentSizes = array}> {dfg_id = 301 : i32, lhs_value = "%arg5", mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %273 = "neura.data_mov"(%272) {dfg_id = 308 : i32, mapping_locs = [{id = 3009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 3009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 3009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 3009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %274 = "neura.load"(%273) {dfg_id = 311 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %275 = "neura.data_mov"(%274) {dfg_id = 313 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %276 = "neura.data_mov"(%264) {dfg_id = 316 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %277 = "neura.add"(%275, %276) {dfg_id = 317 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %278 = "neura.data_mov"(%277) {dfg_id = 318 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %279 = "neura.data_mov"(%272) {dfg_id = 307 : i32, mapping_locs = [{id = 3009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 3009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 3009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 3009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 3009 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 3009 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%278, %279) {dfg_id = 319 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %280 = "neura.data_mov"(%247) {dfg_id = 244 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %281 = "neura.add"(%280) {dfg_id = 253 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %282 = "neura.data_mov"(%244) {dfg_id = 243 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %283 = "neura.add"(%282) {dfg_id = 252 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %284 = "neura.data_mov"(%283) {dfg_id = 262 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %285 = "neura.data_mov"(%241) {dfg_id = 143 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %286 = "neura.icmp"(%284, %285) <{cmpType = "eq"}> {dfg_id = 271 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %287 = "neura.data_mov"(%286) {dfg_id = 280 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %288 = "neura.not"(%287) {dfg_id = 288 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// YAML: array_config: -// YAML-NEXT: columns: 4 +// YAML: columns: 4 // YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 15 +// YAML-NEXT: compiled_ii: 14 // YAML-NEXT: cores: // YAML-NEXT: - column: 0 // YAML-NEXT: row: 0 @@ -335,110 +334,98 @@ // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 212 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 128 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "CONSTANT" +// YAML-NEXT: id: 1 +// YAML-NEXT: time_step: 0 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "arg0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 145 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "ICMP_SGT" +// YAML-NEXT: id: 14 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#0" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 +// YAML-NEXT: id: 18 // YAML-NEXT: time_step: 2 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 150001 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$2" +// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 26 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: id: 93 +// YAML-NEXT: time_step: 17 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$9" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_ULT" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 24 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" +// YAML-NEXT: - operand: "$2" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$17" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 36 +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 43 // YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 39 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$16" +// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 6 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GRANT_PREDICATE" @@ -446,12 +433,22 @@ // YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 30 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 7 // YAML-NEXT: operations: @@ -465,455 +462,455 @@ // YAML-NEXT: - operand: "#2147483644" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3140001 +// YAML-NEXT: - index_per_ii: 8 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 227 // YAML-NEXT: time_step: 22 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 +// YAML-NEXT: - index_per_ii: 10 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 92 -// YAML-NEXT: time_step: 8 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 51 +// YAML-NEXT: time_step: 10 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$16" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" // YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 12 +// YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 30 -// YAML-NEXT: time_step: 8 +// YAML-NEXT: id: 80 +// YAML-NEXT: time_step: 12 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$9" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: - index_per_ii: 13 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "AND" -// YAML-NEXT: id: 46 -// YAML-NEXT: time_step: 9 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 44 +// YAML-NEXT: time_step: 13 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#3" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1100000 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 116 +// YAML-NEXT: time_step: 15 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "arg3" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 +// YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 55 -// YAML-NEXT: time_step: 10 +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 2 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" +// YAML-NEXT: - operand: "arg0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 +// YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 67 -// YAML-NEXT: time_step: 11 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 26 +// YAML-NEXT: time_step: 3 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 620000 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 +// YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 800000 -// YAML-NEXT: time_step: 12 +// YAML-NEXT: - opcode: "ICMP_ULT" +// YAML-NEXT: id: 35 +// YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#4" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 44 -// YAML-NEXT: time_step: 13 +// YAML-NEXT: - opcode: "ZEXT" +// YAML-NEXT: id: 36 +// YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$9" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$17" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 201 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 6 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 232 +// YAML-NEXT: time_step: 20 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$16" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI" -// YAML-NEXT: id: 183 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 266 +// YAML-NEXT: time_step: 20 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 7 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 274 +// YAML-NEXT: time_step: 21 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" -// ASM: # Compiled II: 15 // ASM: PE(0,0): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [EAST, RED] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: CONSTANT, [arg0] -> [$0] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=16, inv_iters=1) +// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0], [NORTH, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [EAST, RED] (t=2, inv_iters=0) +// ASM-NEXT: GRANT_ONCE, [$0] -> [EAST, RED], [NORTH, RED], [$2] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$8], [$0] (t=3, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$9] -> [NORTH, RED] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: ICMP_ULT, [$0], [#4] -> [EAST, RED], [$17], [NORTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: NOT, [$2] -> [NORTH, RED] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: ZEXT, [$8] -> [$8], [$0] (t=5, inv_iters=0) +// ASM-NEXT: NOT, [EAST, RED] -> [$0], [NORTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: AND, [$0], [#2147483644] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=22, inv_iters=1) +// ASM-NEXT: AND, [$0], [#2147483644] -> [NORTH, RED] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$16] -> [EAST, RED], [$0] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=8, inv_iters=0) +// ASM-NEXT: LOAD, [NORTH, RED] -> [EAST, RED] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: AND, [$8], [#3] -> [$0], [NORTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#0] -> [EAST, RED], [$8], [$0] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [NORTH, RED], [$8], [$0] (t=11, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$8] -> [EAST, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [NORTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$9] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$9], [$17] -> [$0] (t=13, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$16] (t=13, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [NORTH, RED] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: PHI, [$0], [NORTH, RED] -> [$0] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) // ASM: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: CONSTANT, [arg0] -> [$0] (t=0, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0], [WEST, RED] (t=1, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: GEP, [arg3], [NORTH, RED] -> [EAST, RED] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [WEST, RED], [NORTH, RED], [EAST, RED] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=17, inv_iters=1) +// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg4], [$0] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: ICMP_ULT, [$0], [#4] -> [NORTH, RED], [WEST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=5, inv_iters=0) -// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=20, inv_iters=1) +// ASM-NEXT: ZEXT, [$0] -> [$0], [WEST, RED] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: LOAD, [$0] -> [WEST, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=21, inv_iters=1) +// ASM-NEXT: LOAD, [EAST, RED] -> [EAST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$16], [$17] -> [EAST, RED] (t=22, inv_iters=1) +// ASM-NEXT: LOAD, [$1] -> [EAST, RED] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$8] -> [EAST, RED] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: AND, [$0], [#3] -> [$0], [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=10, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#0] -> [$8], [$0] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=24, inv_iters=1) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$16] (t=11, inv_iters=0) +// ASM-NEXT: NOT, [$0] -> [NORTH, RED], [WEST, RED] (t=11, inv_iters=0) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [WEST, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$17] (t=12, inv_iters=0) +// ASM-NEXT: STORE, [EAST, RED], [$1] (t=26, inv_iters=1) // ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: OR, [$9], [#3] -> [NORTH, RED], [$0], [EAST, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [$0] -> [WEST, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) // ASM: PE(2,0): // ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [$0] -> [EAST, RED] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [NORTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=17, inv_iters=1) +// ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=3, inv_iters=0) -// ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg4], [$0] -> [WEST, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [WEST, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=20, inv_iters=1) +// ASM-NEXT: GEP, [arg4], [$0] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=21, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [$16] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [$8] -> [EAST, RED] (t=22, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=22, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [$8] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$16] -> [$16] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$24] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=23, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [$0] (t=22, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$9] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: PHI, [$0], [$1], [$8] -> [EAST, RED] (t=24, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=24, inv_iters=1) +// ASM-NEXT: MUL, [$8], [$16] -> [$8] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: ADD, [$16], [$24] -> [$0] (t=25, inv_iters=1) +// ASM-NEXT: MUL, [$0], [$9] -> [EAST, RED] (t=24, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=24, inv_iters=1) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$8] (t=26, inv_iters=1) +// ASM-NEXT: ADD, [$0], [$8] -> [WEST, RED] (t=25, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=25, inv_iters=1) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: STORE, [NORTH, RED], [$0] (t=26, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=12) // ASM: PE(3,0): // ASM-NEXT: { -// ASM-NEXT: LOAD, [WEST, RED] -> [$0] (t=16, inv_iters=1) +// ASM-NEXT: STORE, [NORTH, RED], [$1] (t=29, inv_iters=2) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=18, inv_iters=1) +// ASM-NEXT: LOAD, [WEST, RED] -> [NORTH, RED] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=4, inv_iters=0) -// ASM-NEXT: GEP, [arg5], [$0] -> [$9], [$16] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$8] -> [WEST, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [NORTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: SEXT, [$0] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$0] (t=21, inv_iters=1) +// ASM-NEXT: GEP, [arg5], [$0] -> [$9] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: MUL, [WEST, RED], [$0] -> [WEST, RED] (t=22, inv_iters=1) +// ASM-NEXT: LOAD, [$8] -> [$0] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$9] -> [$0] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=23, inv_iters=1) +// ASM-NEXT: MUL, [WEST, RED], [$0] -> [NORTH, RED] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [$8] -> [$0] (t=24, inv_iters=1) +// ASM-NEXT: LOAD, [$1] -> [NORTH, RED] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$16] (t=25, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=25, inv_iters=1) +// ASM-NEXT: LOAD, [$9] -> [$0] (t=24, inv_iters=1) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [$0] (t=26, inv_iters=1) +// ASM-NEXT: ADD, [$0], [WEST, RED] -> [$0] (t=25, inv_iters=1) // ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [$9] (t=26, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=12) // ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [$24] -> [NORTH, RED] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$8] (t=14, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=14, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$0] (t=16, inv_iters=1) +// ASM-NEXT: PHI, [$0], [$8] -> [EAST, RED] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$25], [$8] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$4] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: NOT, [$4] -> [EAST, RED] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg4], [$0] -> [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$9] -> [EAST, RED] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: NOT, [SOUTH, RED] -> [SOUTH, RED], [$0] (t=5, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$0], [SOUTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$9] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$8], [EAST, RED], [$0] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [$2], [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$9] -> [EAST, RED] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$17], [$26] -> [$0] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=23, inv_iters=1) +// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [EAST, RED], [$1] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$24] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=9, inv_iters=0) +// ASM-NEXT: LOAD, [$9] -> [EAST, RED] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$25] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=10, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$16] (t=24, inv_iters=1) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=11, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$1], [EAST, RED] -> [$1] (t=11, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$9] (t=25, inv_iters=1) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$8], [$0] -> [$17], [$8] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$26] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=12, inv_iters=0) +// ASM-NEXT: PHI_START, [$2], [$16] -> [EAST, RED], [$0] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [SOUTH, RED] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=13, inv_iters=0) +// ASM-NEXT: OR, [$3], [#2] -> [EAST, RED], [NORTH, RED] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [EAST, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) // ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$10] -> [$8], [EAST, RED], [NORTH, RED], [$0] (t=15, inv_iters=1) +// ASM-NEXT: PHI_START, [$1], [$9] -> [$9], [EAST, RED], [$1] (t=14, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=14, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=14, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$8] -> [NORTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: ADD, [$1], [#1] -> [NORTH, RED] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$26] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$8] -> [$1] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=3, inv_iters=0) -// ASM-NEXT: PHI_START, [WEST, RED], [$25] -> [EAST, RED], [$0] (t=18, inv_iters=1) +// ASM-NEXT: PHI_START, [$1], [$16] -> [NORTH, RED] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=19, inv_iters=1) +// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED], [$0], [WEST, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=5, inv_iters=0) +// ASM-NEXT: GEP, [arg1], [$9] -> [SOUTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [WEST, RED] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_ONCE, [$1] -> [WEST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$16] -> [EAST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=22, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$0] (t=22, inv_iters=1) +// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [$8], [$24], [WEST, RED], [NORTH, RED], [EAST, RED], [SOUTH, RED], [$0] (t=8, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [NORTH, RED], [EAST, RED], [WEST, RED] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#4] -> [NORTH, RED], [$8] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$8] -> [EAST, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [EAST, RED], [WEST, RED] -> [$0], [NORTH, RED], [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [SOUTH, RED] -> [$0], [$9], [WEST, RED] (t=10, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$25] (t=25, inv_iters=1) +// ASM-NEXT: NOT, [$0] -> [$0], [WEST, RED], [NORTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=24, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$9] (t=24, inv_iters=1) // ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=11, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=12, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$16] (t=26, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$1] -> [$1] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM: PE(2,1): +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg2], [$0] -> [SOUTH, RED] (t=14, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=14, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg2], [WEST, RED] -> [$8] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg3], [$0] -> [EAST, RED] (t=16, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$8] -> [SOUTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: SEXT, [SOUTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) diff --git a/test/mapping_quality/branch_for.mlir b/test/mapping_quality/branch_for.mlir index b805ab45..ed4e1df1 100644 --- a/test/mapping_quality/branch_for.mlir +++ b/test/mapping_quality/branch_for.mlir @@ -195,196 +195,191 @@ func.func @loop_test() -> f32 { // MOV-NEXT: neura.return_value %25 : !neura.data // MOV-NEXT: neura.yield -// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 4 +// YAML-NEXT: compiled_ii: 5 // YAML-NEXT: cores: -// YAML-NEXT: - column: 0 +// YAML-NEXT: - column: 2 // YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "0" +// YAML-NEXT: core_id: "2" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "RETURN_VALUE" +// YAML-NEXT: id: 56 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 17 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 500001 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 310001 -// YAML-NEXT: time_step: 3 +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 1 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "#10" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 47 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 16 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "3" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 1 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 43 +// YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#10" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 +// YAML-NEXT: - column: 2 // YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" +// YAML-NEXT: core_id: "6" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 2 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 54 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#1" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 400001 -// YAML-NEXT: time_step: 4 +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 45 +// YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 18 -// YAML-NEXT: time_step: 1 +// YAML-NEXT: - opcode: "ICMP_SLT" +// YAML-NEXT: id: 35 +// YAML-NEXT: time_step: 3 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 2 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 44 +// YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 +// YAML-NEXT: - column: 3 // YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" +// YAML-NEXT: core_id: "7" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 44 -// YAML-NEXT: time_step: 4 +// YAML-NEXT: id: 46 +// YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 390000 +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 42 // YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 24 -// YAML-NEXT: time_step: 2 +// YAML-NEXT: id: 40 +// YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "WEST" @@ -392,203 +387,199 @@ func.func @loop_test() -> f32 { // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "9" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SLT" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 3 +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 2 +// YAML-NEXT: time_step: 0 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "#1" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 18 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" +// YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 260001 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "10" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 4 +// YAML-NEXT: id: 47 +// YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 260002 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 16 +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 29 // YAML-NEXT: time_step: 2 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 40 -// YAML-NEXT: time_step: 5 +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 51 +// YAML-NEXT: time_step: 7 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$16" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 46 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 19 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 42 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$16" -// ASM: # Compiled II: 4 -// ASM: PE(0,0): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED] (t=0, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=0) -// ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [EAST, RED] -> [NORTH, RED] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) +// ASM: # Compiled II: 5 // ASM: PE(2,0): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [NORTH, RED] -> [WEST, RED] (t=4, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM: PE(3,0): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#10] -> [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: RETURN_VALUE, [NORTH, RED] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#1] -> [$0] (t=0, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=4, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [NORTH, RED] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$0], [EAST, RED] (t=1, inv_iters=0) +// ASM-NEXT: GRANT_ONCE, [#10] -> [$0] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ADD, [SOUTH, RED], [$0] -> [EAST, RED], [SOUTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [EAST, RED], [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$8] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [WEST, RED] (t=4, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$8] -> [NORTH, RED] (t=4, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [NORTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ICMP_SLT, [WEST, RED], [EAST, RED] -> [SOUTH, RED], [WEST, RED], [$8], [$1], [EAST, RED], [NORTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: ICMP_SLT, [NORTH, RED], [WEST, RED] -> [NORTH, RED], [EAST, RED], [$0], [WEST, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(3,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [$0] (t=4, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [WEST, RED], [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(1,2): +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(3,1): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [NORTH, RED] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [NORTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(2,2): +// ASM-NEXT: NOT, [WEST, RED] -> [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(1,2): // ASM-NEXT: { -// ASM-NEXT: NOT, [SOUTH, RED] -> [NORTH, RED] (t=4, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=4, inv_iters=1) +// ASM-NEXT: GRANT_ONCE, [#1] -> [$0] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=5, inv_iters=1) +// ASM-NEXT: PHI_START, [$0], [SOUTH, RED] -> [EAST, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [NORTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(1,3): +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [EAST, RED] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0.000000] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [EAST, RED], [WEST, RED] -> [SOUTH, RED], [$8] (t=2, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$16] (t=7, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [SOUTH, RED] -> [EAST, RED] (t=3, inv_iters=0) +// ASM-NEXT: PHI_START, [NORTH, RED], [$16] -> [$0], [WEST, RED] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(2,3): // ASM-NEXT: { -// ASM-NEXT: FADD, [WEST, RED], [$0] -> [WEST, RED], [$0] (t=4, inv_iters=1) +// ASM-NEXT: FADD, [EAST, RED], [$0] -> [EAST, RED], [SOUTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM: PE(3,2): +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=0, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [EAST, RED] (t=5, inv_iters=1) +// ASM-NEXT: PHI_START, [$0], [WEST, RED] -> [WEST, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#3.000000] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: GRANT_ONCE, [#0.000000] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$8] (t=7, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [SOUTH, RED] -> [$0], [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [WEST, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(3,3): +// ASM: PE(2,3): // ASM-NEXT: { -// ASM-NEXT: RETURN_VALUE, [WEST, RED] (t=6, inv_iters=1) +// ASM-NEXT: GRANT_ONCE, [#3.000000] -> [SOUTH, RED] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) diff --git a/test/mapping_quality/tiny_loop.mlir b/test/mapping_quality/tiny_loop.mlir index 1b23c2bf..5859a34a 100644 --- a/test/mapping_quality/tiny_loop.mlir +++ b/test/mapping_quality/tiny_loop.mlir @@ -81,6 +81,6 @@ module { // CHECK-NEXT: "neura.return"(%15) : (i64) -> () // CHECK-NEXT: } -// SPATIAL: func.func @simple_add_loop() -> i64 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-only", mapping_strategy = "heuristic", rec_mii = 3 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// SPATIAL: func.func @simple_add_loop() -> i64 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-only", mapping_strategy = "heuristic", rec_mii = 3 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { -// SPATIAL-TEMPORAL: func.func @simple_add_loop() -> i64 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 3 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 3 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { \ No newline at end of file +// SPATIAL-TEMPORAL: func.func @simple_add_loop() -> i64 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 3 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { \ No newline at end of file diff --git a/test/multi-cgra/kernel_mapping/fir/fir.mlir b/test/multi-cgra/kernel_mapping/fir/fir.mlir index 69d228c7..98a2b8af 100644 --- a/test/multi-cgra/kernel_mapping/fir/fir.mlir +++ b/test/multi-cgra/kernel_mapping/fir/fir.mlir @@ -89,7 +89,7 @@ module attributes {} { } } -// TASKFLOW: module { +// TASKFLOW: module { // TASKFLOW-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // TASKFLOW-NEXT: %c0_i32 = arith.constant 0 : i32 // TASKFLOW-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -107,7 +107,7 @@ module attributes {} { // TASKFLOW-NEXT: } // TASKFLOW-NEXT: } -// HYPERBLOCK: module { +// HYPERBLOCK: module { // HYPERBLOCK-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // HYPERBLOCK-NEXT: %c0_i32 = arith.constant 0 : i32 // HYPERBLOCK-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -127,7 +127,7 @@ module attributes {} { // HYPERBLOCK-NEXT: } // HYPERBLOCK-NEXT: } -// KERNEL: module { +// KERNEL: module { // KERNEL-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // KERNEL-NEXT: %c0_i32 = arith.constant 0 : i32 // KERNEL-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -148,7 +148,7 @@ module attributes {} { // KERNEL-NEXT: } // KERNEL-NEXT: } -// NEURA: module { +// NEURA: module { // NEURA-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // NEURA-NEXT: %c0_i32 = arith.constant 0 : i32 // NEURA-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -169,7 +169,7 @@ module attributes {} { // NEURA-NEXT: } // NEURA-NEXT: } -// DATAFLOW: module { +// DATAFLOW: module { // DATAFLOW-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // DATAFLOW-NEXT: %c0_i32 = arith.constant 0 : i32 // DATAFLOW-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { @@ -198,20 +198,20 @@ module attributes {} { // DATAFLOW-NEXT: } // DATAFLOW-NEXT: } -// MAPPED: module { +// MAPPED: module { // MAPPED-NEXT: func.func @_Z6kernelPiS_S_(%arg0: memref, %arg1: memref, %arg2: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // MAPPED-NEXT: %c0_i32 = arith.constant 0 : i32 // MAPPED-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { // MAPPED-NEXT: ^bb0(%arg3: memref, %arg4: memref, %arg5: i32): // MAPPED-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 32 : index} : index -// MAPPED-NEXT: %1 = neura.kernel inputs(%arg3, %arg4 : memref, memref) iter_args_init(%arg5 : i32) attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 2 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPED-NEXT: %1 = neura.kernel inputs(%arg3, %arg4 : memref, memref) iter_args_init(%arg5 : i32) attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 2 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // MAPPED-NEXT: ^bb0(%arg6: memref, %arg7: memref, %arg8: i32): // MAPPED-NEXT: %2 = "neura.grant_once"() <{constant_value = "%iter_arg_init0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPED-NEXT: %3 = neura.reserve {dfg_id = 1 : i32} : !neura.data // MAPPED-NEXT: %4 = "neura.data_mov"(%2) {dfg_id = 4 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %5 = neura.phi_start %4, %3 {dfg_id = 8 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %6 = neura.counter {counter_id = 0 : i32, counter_type = "leaf", dfg_id = 2 : i32, lower_bound = 0 : index, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}], step = 1 : index, upper_bound = 32 : index} : !neura.data -// MAPPED-NEXT: %7 = "neura.data_mov"(%6) {dfg_id = 5 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 0 : i32}, {id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %7 = "neura.data_mov"(%6) {dfg_id = 5 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}, {id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %8 = neura.load_indexed [%7 : !neura.data] {dfg_id = 9 : i32, lhs_value = "%input0", mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data // MAPPED-NEXT: %9 = "neura.data_mov"(%6) {dfg_id = 6 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %10 = neura.load_indexed [%9 : !neura.data] {dfg_id = 10 : i32, lhs_value = "%input1", mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data @@ -237,4 +237,4 @@ module attributes {} { // MAPPED-NEXT: } // MAPPED-NEXT: return %value_outputs : i32 // MAPPED-NEXT: } -// MAPPED-NEXT: } \ No newline at end of file +// MAPPED-NEXT: } diff --git a/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir b/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir index 0e9c0b38..14766c84 100644 --- a/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir +++ b/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir @@ -152,7 +152,7 @@ module { // MAPPED-NEXT: %c0_i32 = arith.constant 0 : i32 // MAPPED-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_o dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) : (memref, memref, i32) -> (memref, memref, i32) { // MAPPED-NEXT: ^bb0(%arg3: memref, %arg4: memref, %arg5: i32): -// MAPPED-NEXT: %0 = neura.kernel inputs(%arg3, %arg4, %arg5 : memref, memref, i32) attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 6 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPED-NEXT: %0 = neura.kernel inputs(%arg3, %arg4, %arg5 : memref, memref, i32) attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // MAPPED-NEXT: ^bb0(%arg6: memref, %arg7: memref, %arg8: i32): // MAPPED-NEXT: %1 = "neura.grant_once"() <{constant_value = "%input2"}> {dfg_id = 0 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPED-NEXT: %2 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data @@ -164,19 +164,19 @@ module { // MAPPED-NEXT: %8 = neura.phi_start %7, %6 {dfg_id = 8 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 12 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %10 = "neura.icmp"(%9) <{cmpType = "slt"}> {dfg_id = 13 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 32 : index} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %11 = "neura.data_mov"(%8) {dfg_id = 11 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 16 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %11 = "neura.data_mov"(%8) {dfg_id = 11 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 16 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 19 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %14 = "neura.data_mov"(%5) {dfg_id = 10 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 15 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %15 = "neura.data_mov"(%10) {dfg_id = 15 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 200 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 18 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %17 = "neura.data_mov"(%10) {dfg_id = 14 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %18 = "neura.not"(%17) {dfg_id = 17 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %19 = "neura.data_mov"(%5) {dfg_id = 9 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %20 = "neura.data_mov"(%18) {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %21 = neura.grant_predicate %19, %20 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPED-NEXT: %22 = "neura.data_mov"(%21) {dfg_id = 29 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: neura.return_value %22 : !neura.data {dfg_id = 33 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} +// MAPPED-NEXT: %22 = "neura.data_mov"(%21) {dfg_id = 29 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: neura.return_value %22 : !neura.data {dfg_id = 33 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 1 : i32}]} // MAPPED-NEXT: %23 = "neura.data_mov"(%13) {dfg_id = 24 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %24 = neura.load_indexed [%23 : !neura.data] {dfg_id = 28 : i32, lhs_value = "%input0", mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data // MAPPED-NEXT: %25 = "neura.data_mov"(%13) {dfg_id = 23 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data @@ -190,7 +190,7 @@ module { // MAPPED-NEXT: %33 = "neura.data_mov"(%13) {dfg_id = 22 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %34 = "neura.add"(%33) {dfg_id = 26 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : index} : (!neura.data) -> !neura.data // MAPPED-NEXT: neura.ctrl_mov %34 -> %6 {dfg_id = 30 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : !neura.data !neura.data -// MAPPED-NEXT: neura.ctrl_mov %32 -> %3 {dfg_id = 37 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 194 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 194 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}]} : !neura.data !neura.data +// MAPPED-NEXT: neura.ctrl_mov %32 -> %3 {dfg_id = 37 : i32, mapping_locs = [{id = 201 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 201 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 201 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}]} : !neura.data !neura.data // MAPPED-NEXT: neura.yield {dfg_id = 4 : i32} // MAPPED-NEXT: } : i32 // MAPPED-NEXT: taskflow.yield reads(%arg3, %arg4 : memref, memref) values(%0 : i32) diff --git a/test/multi-cgra/kernel_mapping/relu/relu.mlir b/test/multi-cgra/kernel_mapping/relu/relu.mlir index 3c55d42b..006240d3 100644 --- a/test/multi-cgra/kernel_mapping/relu/relu.mlir +++ b/test/multi-cgra/kernel_mapping/relu/relu.mlir @@ -237,7 +237,7 @@ module attributes {} { // MAPPED-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { // MAPPED-NEXT: ^bb0(%arg2: memref, %arg3: memref, %arg4: memref, %arg5: i32): // MAPPED-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 32 : index} : index -// MAPPED-NEXT: neura.kernel inputs(%arg2, %arg5, %arg4 : memref, i32, memref) attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 2 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 1 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPED-NEXT: neura.kernel inputs(%arg2, %arg5, %arg4 : memref, i32, memref) attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 1 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // MAPPED-NEXT: ^bb0(%arg6: memref, %arg7: i32, %arg8: memref): // MAPPED-NEXT: %1 = neura.counter {counter_id = 0 : i32, counter_type = "leaf", dfg_id = 0 : i32, lower_bound = 0 : index, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 1 : i32}], step = 1 : index, upper_bound = 32 : index} : !neura.data // MAPPED-NEXT: %2 = "neura.data_mov"(%1) {dfg_id = 2 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data @@ -245,19 +245,19 @@ module attributes {} { // MAPPED-NEXT: %4 = "neura.data_mov"(%3) {dfg_id = 6 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %5 = "neura.icmp"(%4) <{cmpType = "sgt"}> {dfg_id = 7 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = "%input1"} : (!neura.data) -> !neura.data // MAPPED-NEXT: %6 = "neura.data_mov"(%1) {dfg_id = 3 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 32 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %7 = "neura.data_mov"(%5) {dfg_id = 9 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %7 = "neura.data_mov"(%5) {dfg_id = 9 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %8 = neura.grant_predicate %6, %7 {dfg_id = 11 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %9 = "neura.data_mov"(%5) {dfg_id = 8 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %10 = "neura.not"(%9) {dfg_id = 10 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %11 = "neura.data_mov"(%1) {dfg_id = 4 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 11 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 12 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 16 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPED-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 20 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %11 = "neura.data_mov"(%1) {dfg_id = 4 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 128 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 128 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 128 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 12 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 16 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPED-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 20 : i32, mapping_locs = [{id = 129 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %15 = neura.load_indexed [%14 : !neura.data] {dfg_id = 23 : i32, lhs_value = "%input2", mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -// MAPPED-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 25 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 5 : i32}, {id = 256 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %17 = "neura.data_mov"(%13) {dfg_id = 19 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 5 : i32}, {id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: neura.store_indexed %16 to [%17 : !neura.data] {dfg_id = 27 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 3 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 2 : i32}], rhs_value = "%input2"} : !neura.data -// MAPPED-NEXT: %18 = "neura.data_mov"(%8) {dfg_id = 15 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 25 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %17 = "neura.data_mov"(%13) {dfg_id = 19 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}, {id = 256 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: neura.store_indexed %16 to [%17 : !neura.data] {dfg_id = 27 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 2 : i32}], rhs_value = "%input2"} : !neura.data +// MAPPED-NEXT: %18 = "neura.data_mov"(%8) {dfg_id = 15 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 3 : i32}, {id = 64 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %19 = neura.load_indexed [%18 : !neura.data] {dfg_id = 18 : i32, lhs_value = "%input0", mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data // MAPPED-NEXT: %20 = "neura.data_mov"(%8) {dfg_id = 14 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %21 = neura.load_indexed [%20 : !neura.data] {dfg_id = 17 : i32, lhs_value = "%input2", mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data @@ -265,7 +265,7 @@ module attributes {} { // MAPPED-NEXT: %23 = "neura.data_mov"(%19) {dfg_id = 22 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %24 = "neura.add"(%22, %23) {dfg_id = 24 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, resource = "tile", time_step = 6 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data // MAPPED-NEXT: %25 = "neura.data_mov"(%24) {dfg_id = 26 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %26 = "neura.data_mov"(%8) {dfg_id = 13 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 3 : i32}, {id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}, {id = 18 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 5 : i32}, {id = 224 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %26 = "neura.data_mov"(%8) {dfg_id = 13 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 3 : i32}, {id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}, {id = 18 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 5 : i32}, {id = 224 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: neura.store_indexed %25 to [%26 : !neura.data] {dfg_id = 28 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 3 : i32, resource = "tile", time_step = 7 : i32, x = 3 : i32, y = 1 : i32}], rhs_value = "%input2"} : !neura.data // MAPPED-NEXT: neura.yield {dfg_id = 1 : i32, yield_type = "void"} // MAPPED-NEXT: } diff --git a/test/multi-cgra/taskflow/irregular-loop/irregular-loop.mlir b/test/multi-cgra/taskflow/irregular-loop/irregular-loop.mlir index 2687e7a2..0e18b971 100644 --- a/test/multi-cgra/taskflow/irregular-loop/irregular-loop.mlir +++ b/test/multi-cgra/taskflow/irregular-loop/irregular-loop.mlir @@ -95,7 +95,8 @@ module attributes {} { } } -// SERIALIZED: module { +// SERIALIZED: #set = affine_set<(d0, d1) : (d0 - 3 == 0, d1 - 7 == 0)> +// SERIALIZED-NEXT: module { // SERIALIZED-NEXT: func.func @_Z21irregularLoopExample1v() -> i32 attributes {llvm.linkage = #llvm.linkage} { // SERIALIZED-NEXT: %c2_i32 = arith.constant 2 : i32 // SERIALIZED-NEXT: %c8_i32 = arith.constant 8 : i32 @@ -134,7 +135,8 @@ module attributes {} { // SERIALIZED-NEXT: } // SERIALIZED-NEXT: } -// PERFECT: module { +// PERFECT: #set = affine_set<(d0, d1) : (d0 - 3 == 0, d1 - 7 == 0)> +// PERFECT-NEXT: module { // PERFECT-NEXT: func.func @_Z21irregularLoopExample1v() -> i32 attributes {llvm.linkage = #llvm.linkage} { // PERFECT-NEXT: %c2_i32 = arith.constant 2 : i32 // PERFECT-NEXT: %c8_i32 = arith.constant 8 : i32 @@ -173,7 +175,7 @@ module attributes {} { // PERFECT-NEXT: } // PERFECT-NEXT: } -// TASKFLOW: #set = affine_set<(d0, d1) : (d0 - 3 == 0, d1 - 7 == 0)> +// TASKFLOW: #set = affine_set<(d0, d1) : (d0 - 3 == 0, d1 - 7 == 0)> // TASKFLOW-NEXT: module { // TASKFLOW-NEXT: func.func @_Z21irregularLoopExample1v() -> i32 attributes {llvm.linkage = #llvm.linkage} { // TASKFLOW-NEXT: %c2_i32 = arith.constant 2 : i32 @@ -225,7 +227,7 @@ module attributes {} { // TASKFLOW-NEXT: } // TASKFLOW-NEXT: } -// KERNEL: module { +// KERNEL: module { // KERNEL-NEXT: func.func @_Z21irregularLoopExample1v() -> i32 attributes {llvm.linkage = #llvm.linkage} { // KERNEL-NEXT: %c2_i32 = arith.constant 2 : i32 // KERNEL-NEXT: %c8_i32 = arith.constant 8 : i32 @@ -302,7 +304,7 @@ module attributes {} { // KERNEL-NEXT: } // KERNEL-NEXT: } -// HYPERBLOCK: module { +// HYPERBLOCK: module { // HYPERBLOCK-NEXT: func.func @_Z21irregularLoopExample1v() -> i32 attributes {llvm.linkage = #llvm.linkage} { // HYPERBLOCK-NEXT: %c2_i32 = arith.constant 2 : i32 // HYPERBLOCK-NEXT: %c8_i32 = arith.constant 8 : i32 @@ -375,14 +377,139 @@ module attributes {} { // HYPERBLOCK-NEXT: } // HYPERBLOCK-NEXT: } -// PLACEMENT: taskflow.task @Task_0 -// PLACEMENT-SAME: task_mapping_info = {cgra_positions = [{col = 0 : i32, row = 0 : i32}], read_sram_locations = [], write_sram_locations = []} -// PLACEMENT: taskflow.task @Task_1 -// PLACEMENT-SAME: task_mapping_info = {cgra_positions = [{col = 1 : i32, row = 1 : i32}], read_sram_locations = [], write_sram_locations = [{col = 1 : i32, row = 1 : i32}]} -// PLACEMENT: taskflow.task @Task_2 -// PLACEMENT-SAME: task_mapping_info = {cgra_positions = [{col = 0 : i32, row = 1 : i32}], read_sram_locations = [{col = 1 : i32, row = 1 : i32}], write_sram_locations = [{col = 0 : i32, row = 1 : i32}]} +// PLACEMENT: module { +// PLACEMENT-NEXT: func.func @_Z21irregularLoopExample1v() -> i32 attributes {llvm.linkage = #llvm.linkage} { +// PLACEMENT-NEXT: %c2_i32 = arith.constant 2 : i32 +// PLACEMENT-NEXT: %c8_i32 = arith.constant 8 : i32 +// PLACEMENT-NEXT: %c0_i32 = arith.constant 0 : i32 +// PLACEMENT-NEXT: %alloca = memref.alloca() : memref +// PLACEMENT-NEXT: %alloca_0 = memref.alloca() : memref<4x8xi32> +// PLACEMENT-NEXT: %value_outputs = taskflow.task @Task_0 value_inputs(%c0_i32 : i32) {task_mapping_info = {cgra_positions = [{col = 0 : i32, row = 0 : i32}], read_sram_locations = [], write_sram_locations = []}} : (i32) -> (i32) { +// PLACEMENT-NEXT: ^bb0(%arg0: i32): +// PLACEMENT-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 5 : index} : index +// PLACEMENT-NEXT: %2 = "taskflow.hyperblock"(%1, %arg0) <{operandSegmentSizes = array}> ({ +// PLACEMENT-NEXT: ^bb0(%arg1: index, %arg2: i32): +// PLACEMENT-NEXT: %3 = arith.index_cast %arg1 : index to i32 +// PLACEMENT-NEXT: %4 = arith.addi %arg2, %3 : i32 +// PLACEMENT-NEXT: taskflow.hyperblock.yield iter_args_next(%4 : i32) results(%4 : i32) +// PLACEMENT-NEXT: }) : (index, i32) -> i32 +// PLACEMENT-NEXT: taskflow.yield values(%2 : i32) +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: %dependency_write_out = taskflow.task @Task_1 dependency_write_in(%alloca_0 : memref<4x8xi32>) value_inputs(%c8_i32 : i32) [original_write_memrefs(%alloca_0 : memref<4x8xi32>)] {task_mapping_info = {cgra_positions = [{col = 1 : i32, row = 1 : i32}], read_sram_locations = [], write_sram_locations = [{col = 1 : i32, row = 1 : i32}]}} : (memref<4x8xi32>, i32) -> (memref<4x8xi32>) { +// PLACEMENT-NEXT: ^bb0(%arg0: memref<4x8xi32>, %arg1: i32): +// PLACEMENT-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// PLACEMENT-NEXT: "taskflow.hyperblock"(%1) <{operandSegmentSizes = array}> ({ +// PLACEMENT-NEXT: ^bb0(%arg2: index): +// PLACEMENT-NEXT: %2 = arith.index_cast %arg2 : index to i32 +// PLACEMENT-NEXT: %3 = arith.muli %2, %arg1 : i32 +// PLACEMENT-NEXT: %c0 = arith.constant 0 : index +// PLACEMENT-NEXT: %c8 = arith.constant 8 : index +// PLACEMENT-NEXT: %c1 = arith.constant 1 : index +// PLACEMENT-NEXT: scf.for %arg3 = %c0 to %c8 step %c1 { +// PLACEMENT-NEXT: %4 = arith.index_cast %arg3 : index to i32 +// PLACEMENT-NEXT: %5 = arith.addi %3, %4 : i32 +// PLACEMENT-NEXT: memref.store %5, %arg0[%arg2, %arg3] : memref<4x8xi32> +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: taskflow.hyperblock.yield +// PLACEMENT-NEXT: }) : (index) -> () +// PLACEMENT-NEXT: taskflow.yield writes(%arg0 : memref<4x8xi32>) +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: %dependency_read_out, %dependency_write_out_1 = taskflow.task @Task_2 dependency_read_in(%dependency_write_out : memref<4x8xi32>) dependency_write_in(%alloca : memref) value_inputs(%c8_i32, %value_outputs, %c2_i32 : i32, i32, i32) [original_read_memrefs(%alloca_0 : memref<4x8xi32>), original_write_memrefs(%alloca : memref)] {task_mapping_info = {cgra_positions = [{col = 0 : i32, row = 1 : i32}], read_sram_locations = [{col = 1 : i32, row = 1 : i32}], write_sram_locations = [{col = 0 : i32, row = 1 : i32}]}} : (memref<4x8xi32>, memref, i32, i32, i32) -> (memref<4x8xi32>, memref) { +// PLACEMENT-NEXT: ^bb0(%arg0: memref<4x8xi32>, %arg1: memref, %arg2: i32, %arg3: i32, %arg4: i32): +// PLACEMENT-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// PLACEMENT-NEXT: "taskflow.hyperblock"(%1) <{operandSegmentSizes = array}> ({ +// PLACEMENT-NEXT: ^bb0(%arg5: index): +// PLACEMENT-NEXT: %2 = arith.index_cast %arg5 : index to i32 +// PLACEMENT-NEXT: %3 = arith.muli %2, %arg2 : i32 +// PLACEMENT-NEXT: %c0 = arith.constant 0 : index +// PLACEMENT-NEXT: %c8 = arith.constant 8 : index +// PLACEMENT-NEXT: %c1 = arith.constant 1 : index +// PLACEMENT-NEXT: scf.for %arg6 = %c0 to %c8 step %c1 { +// PLACEMENT-NEXT: %4 = memref.load %arg0[%arg5, %arg6] : memref<4x8xi32> +// PLACEMENT-NEXT: %5 = arith.addi %4, %arg3 : i32 +// PLACEMENT-NEXT: %c0_2 = arith.constant 0 : index +// PLACEMENT-NEXT: %c-3 = arith.constant -3 : index +// PLACEMENT-NEXT: %6 = arith.addi %arg5, %c-3 : index +// PLACEMENT-NEXT: %7 = arith.cmpi eq, %6, %c0_2 : index +// PLACEMENT-NEXT: %c-7 = arith.constant -7 : index +// PLACEMENT-NEXT: %8 = arith.addi %arg6, %c-7 : index +// PLACEMENT-NEXT: %9 = arith.cmpi eq, %8, %c0_2 : index +// PLACEMENT-NEXT: %10 = arith.andi %7, %9 : i1 +// PLACEMENT-NEXT: scf.if %10 { +// PLACEMENT-NEXT: memref.store %5, %arg1[] : memref +// PLACEMENT-NEXT: %11 = arith.muli %5, %arg4 : i32 +// PLACEMENT-NEXT: memref.store %11, %arg1[] : memref +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: taskflow.hyperblock.yield +// PLACEMENT-NEXT: }) : (index) -> () +// PLACEMENT-NEXT: taskflow.yield reads(%arg0 : memref<4x8xi32>) writes(%arg1 : memref) +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: %0 = affine.load %dependency_write_out_1[] : memref +// PLACEMENT-NEXT: return %0 : i32 +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: } -// RESOPT: taskflow.task @Task_0_Task_1_utilfused -// RESOPT-SAME: {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 5 : i32, tile_shape = "1x2", trip_count = 32 : i32} -// RESOPT: taskflow.task @Task_2 -// RESOPT-SAME: {cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 7 : i32, tile_shape = "1x2", trip_count = 32 : i32} +// RESOPT: module { +// RESOPT-NEXT: func.func @_Z21irregularLoopExample1v() -> i32 attributes {llvm.linkage = #llvm.linkage} { +// RESOPT-NEXT: %c2_i32 = arith.constant 2 : i32 +// RESOPT-NEXT: %c8_i32 = arith.constant 8 : i32 +// RESOPT-NEXT: %c0_i32 = arith.constant 0 : i32 +// RESOPT-NEXT: %alloca = memref.alloca() : memref +// RESOPT-NEXT: %alloca_0 = memref.alloca() : memref<4x8xi32> +// RESOPT-NEXT: %dependency_write_out, %value_outputs = taskflow.task @Task_0_Task_1_utilfused dependency_write_in(%alloca_0 : memref<4x8xi32>) value_inputs(%c0_i32, %c8_i32 : i32, i32) [original_write_memrefs(%alloca_0 : memref<4x8xi32>)] {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 5 : i32, tile_shape = "1x2", trip_count = 32 : i32} : (memref<4x8xi32>, i32, i32) -> (memref<4x8xi32>, i32) { +// RESOPT-NEXT: ^bb0(%arg0: memref<4x8xi32>, %arg1: i32, %arg2: i32): +// RESOPT-NEXT: %1 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 5 : index} : index +// RESOPT-NEXT: %2 = neura.kernel inputs(%arg2, %arg0 : i32, memref<4x8xi32>) iter_args_init(%arg1 : i32) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg3: i32, %arg4: memref<4x8xi32>, %arg5: i32): +// RESOPT-NEXT: %5 = "neura.grant_once"() <{constant_value = "%iter_arg_init0"}> : () -> !neura.data +// RESOPT-NEXT: %6 = neura.reserve : !neura.data +// RESOPT-NEXT: %7 = neura.phi_start %5, %6 : !neura.data, !neura.data -> !neura.data +// RESOPT-NEXT: %8 = neura.counter {counter_id = 0 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 5 : index} : !neura.data +// RESOPT-NEXT: %9 = "neura.cast"(%8) <{cast_type = "index_to_int"}> : (!neura.data) -> !neura.data +// RESOPT-NEXT: %10 = "neura.add"(%7, %9) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.ctrl_mov %10 -> %6 : !neura.data !neura.data +// RESOPT-NEXT: %11 = neura.extract_predicate %8 : !neura.data -> !neura.data +// RESOPT-NEXT: %12 = "neura.not"(%11) : (!neura.data) -> !neura.data +// RESOPT-NEXT: %13 = neura.grant_predicate %7, %12 : !neura.data, !neura.data -> !neura.data +// RESOPT-NEXT: neura.return_value %13 : !neura.data +// RESOPT-NEXT: %14 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : !neura.data +// RESOPT-NEXT: %15 = neura.counter {counter_id = 1 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %16 = "neura.cast"(%14) <{cast_type = "index_to_int"}> : (!neura.data) -> !neura.data +// RESOPT-NEXT: %17 = "neura.mul"(%16) {rhs_value = "%input0"} : (!neura.data) -> !neura.data +// RESOPT-NEXT: %18 = "neura.cast"(%15) <{cast_type = "index_to_int"}> : (!neura.data) -> !neura.data +// RESOPT-NEXT: %19 = "neura.add"(%17, %18) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %19 to [%14, %15 : !neura.data, !neura.data] {rhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: neura.yield +// RESOPT-NEXT: } : i32 +// RESOPT-NEXT: %3 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// RESOPT-NEXT: %4 = taskflow.counter parent(%3 : index) attributes {counter_id = 1 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: taskflow.yield writes(%arg0 : memref<4x8xi32>) values(%2 : i32) +// RESOPT-NEXT: } +// RESOPT-NEXT: %dependency_read_out, %dependency_write_out_1 = taskflow.task @Task_2 dependency_read_in(%dependency_write_out : memref<4x8xi32>) dependency_write_in(%alloca : memref) value_inputs(%c8_i32, %value_outputs, %c2_i32 : i32, i32, i32) [original_read_memrefs(%alloca_0 : memref<4x8xi32>), original_write_memrefs(%alloca : memref)] {cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 7 : i32, tile_shape = "1x2", trip_count = 32 : i32} : (memref<4x8xi32>, memref, i32, i32, i32) -> (memref<4x8xi32>, memref) { +// RESOPT-NEXT: ^bb0(%arg0: memref<4x8xi32>, %arg1: memref, %arg2: i32, %arg3: i32, %arg4: i32): +// RESOPT-NEXT: %1 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 1 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg0, %arg3, %arg1, %arg4 : memref<4x8xi32>, i32, memref, i32) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg5: memref<4x8xi32>, %arg6: i32, %arg7: memref, %arg8: i32): +// RESOPT-NEXT: %3 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : !neura.data +// RESOPT-NEXT: %4 = neura.counter {counter_id = 1 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %5 = neura.load_indexed [%3, %4 : !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %6 = "neura.add"(%5) {rhs_value = "%input1"} : (!neura.data) -> !neura.data +// RESOPT-NEXT: %7 = "neura.add"(%3) {rhs_value = -3 : index} : (!neura.data) -> !neura.data +// RESOPT-NEXT: %8 = "neura.icmp"(%7) <{cmpType = "eq"}> {rhs_value = 0 : index} : (!neura.data) -> !neura.data +// RESOPT-NEXT: %9 = "neura.add"(%4) {rhs_value = -7 : index} : (!neura.data) -> !neura.data +// RESOPT-NEXT: %10 = "neura.icmp"(%9) <{cmpType = "eq"}> {rhs_value = 0 : index} : (!neura.data) -> !neura.data +// RESOPT-NEXT: %11 = "neura.and"(%8, %10) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %12 = neura.grant_predicate %6, %11 : !neura.data, !neura.data -> !neura.data +// RESOPT-NEXT: neura.store_indexed %12 to [ : ] {rhs_value = "%input2"} : !neura.data +// RESOPT-NEXT: %13 = "neura.mul"(%12) {rhs_value = "%input3"} : (!neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %13 to [ : ] {rhs_value = "%input2"} : !neura.data +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: taskflow.yield reads(%arg0 : memref<4x8xi32>) writes(%arg1 : memref) +// RESOPT-NEXT: } +// RESOPT-NEXT: %0 = memref.load %dependency_write_out_1[] : memref +// RESOPT-NEXT: return %0 : i32 +// RESOPT-NEXT: } +// RESOPT-NEXT: } diff --git a/test/multi-cgra/taskflow/multi-nested/multi-nested.mlir b/test/multi-cgra/taskflow/multi-nested/multi-nested.mlir index f6bca84c..fdbe54da 100644 --- a/test/multi-cgra/taskflow/multi-nested/multi-nested.mlir +++ b/test/multi-cgra/taskflow/multi-nested/multi-nested.mlir @@ -104,7 +104,7 @@ module attributes {} { } } -// SERIALIZED: module { +// SERIALIZED: module { // SERIALIZED-NEXT: func.func @_Z21pureNestedLoopExamplePA8_A6_iPA8_A5_iS4_PA7_iPA9_iPiS9_S9_S9_S9_(%arg0: memref, %arg1: memref, %arg2: memref, %arg3: memref, %arg4: memref, %arg5: memref, %arg6: memref, %arg7: memref, %arg8: memref, %arg9: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // SERIALIZED-NEXT: affine.for %arg10 = 0 to 4 { // SERIALIZED-NEXT: affine.for %arg11 = 0 to 8 { @@ -155,7 +155,7 @@ module attributes {} { // SERIALIZED-NEXT: } // SERIALIZED-NEXT: } -// PERFECT: module { +// PERFECT: module { // PERFECT-NEXT: func.func @_Z21pureNestedLoopExamplePA8_A6_iPA8_A5_iS4_PA7_iPA9_iPiS9_S9_S9_S9_(%arg0: memref, %arg1: memref, %arg2: memref, %arg3: memref, %arg4: memref, %arg5: memref, %arg6: memref, %arg7: memref, %arg8: memref, %arg9: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // PERFECT-NEXT: affine.for %arg10 = 0 to 4 { // PERFECT-NEXT: affine.for %arg11 = 0 to 8 { @@ -206,7 +206,7 @@ module attributes {} { // PERFECT-NEXT: } // PERFECT-NEXT: } -// TASKFLOW: module { +// TASKFLOW: module { // TASKFLOW-NEXT: func.func @_Z21pureNestedLoopExamplePA8_A6_iPA8_A5_iS4_PA7_iPA9_iPiS9_S9_S9_S9_(%arg0: memref, %arg1: memref, %arg2: memref, %arg3: memref, %arg4: memref, %arg5: memref, %arg6: memref, %arg7: memref, %arg8: memref, %arg9: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // TASKFLOW-NEXT: %dependency_read_out, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0 : memref) dependency_write_in(%arg5 : memref) [original_read_memrefs(%arg0 : memref), original_write_memrefs(%arg5 : memref)] : (memref, memref) -> (memref, memref) { // TASKFLOW-NEXT: ^bb0(%arg10: memref, %arg11: memref): @@ -277,7 +277,7 @@ module attributes {} { // TASKFLOW-NEXT: } // TASKFLOW-NEXT: } -// STREAM: module { +// STREAM: module { // STREAM-NEXT: func.func @_Z21pureNestedLoopExamplePA8_A6_iPA8_A5_iS4_PA7_iPA9_iPiS9_S9_S9_S9_(%arg0: memref, %arg1: memref, %arg2: memref, %arg3: memref, %arg4: memref, %arg5: memref, %arg6: memref, %arg7: memref, %arg8: memref, %arg9: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { // STREAM-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_1 dependency_read_in(%arg1, %arg2 : memref, memref) dependency_write_in(%arg6 : memref) [original_read_memrefs(%arg1, %arg2 : memref, memref), original_write_memrefs(%arg6 : memref)] : (memref, memref, memref) -> (memref, memref, memref) { // STREAM-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): @@ -336,208 +336,338 @@ module attributes {} { // STREAM-NEXT: } // STREAM-NEXT: } -// KERNEL: module { -// KERNEL-NEXT: func.func @_Z21pureNestedLoopExamplePA8_A6_iPA8_A5_iS4_PA7_iPA9_iPiS9_S9_S9_S9_(%arg0: memref, %arg1: memref, %arg2: memref, %arg3: memref, %arg4: memref, %arg5: memref, %arg6: memref, %arg7: memref, %arg8: memref, %arg9: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { -// KERNEL-NEXT: %dependency_read_out, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0 : memref) dependency_write_in(%arg5 : memref) [original_read_memrefs(%arg0 : memref), original_write_memrefs(%arg5 : memref)] : (memref, memref) -> (memref, memref) { -// KERNEL-NEXT: ^bb0(%arg10: memref, %arg11: memref): -// KERNEL-NEXT: affine.for %arg12 = 0 to 4 { -// KERNEL-NEXT: affine.for %arg13 = 0 to 8 { -// KERNEL-NEXT: neura.kernel inputs(%arg10, %arg12, %arg13, %arg11 : memref, index, index, memref) { -// KERNEL-NEXT: ^bb0(%arg14: memref, %arg15: index, %arg16: index, %arg17: memref): -// KERNEL-NEXT: %c0 = arith.constant 0 : index -// KERNEL-NEXT: %c6 = arith.constant 6 : index -// KERNEL-NEXT: %c1 = arith.constant 1 : index -// KERNEL-NEXT: scf.for %arg18 = %c0 to %c6 step %c1 { -// KERNEL-NEXT: %1 = memref.load %arg14[%arg15, %arg16, %arg18] : memref -// KERNEL-NEXT: memref.store %1, %arg17[%arg18] : memref -// KERNEL-NEXT: } -// KERNEL-NEXT: neura.yield -// KERNEL-NEXT: } -// KERNEL-NEXT: } -// KERNEL-NEXT: } -// KERNEL-NEXT: taskflow.yield reads(%arg10 : memref) writes(%arg11 : memref) -// KERNEL-NEXT: } -// KERNEL-NEXT: %dependency_read_out_0:2, %dependency_write_out_1 = taskflow.task @Task_1 dependency_read_in(%arg1, %arg2 : memref, memref) dependency_write_in(%arg6 : memref) [original_read_memrefs(%arg1, %arg2 : memref, memref), original_write_memrefs(%arg6 : memref)] : (memref, memref, memref) -> (memref, memref, memref) { -// KERNEL-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): -// KERNEL-NEXT: affine.for %arg13 = 0 to 4 { -// KERNEL-NEXT: affine.for %arg14 = 0 to 8 { -// KERNEL-NEXT: neura.kernel inputs(%arg10, %arg13, %arg14, %arg11, %arg12 : memref, index, index, memref, memref) { -// KERNEL-NEXT: ^bb0(%arg15: memref, %arg16: index, %arg17: index, %arg18: memref, %arg19: memref): -// KERNEL-NEXT: %c0 = arith.constant 0 : index -// KERNEL-NEXT: %c5 = arith.constant 5 : index -// KERNEL-NEXT: %c1 = arith.constant 1 : index -// KERNEL-NEXT: scf.for %arg20 = %c0 to %c5 step %c1 { -// KERNEL-NEXT: %1 = memref.load %arg15[%arg16, %arg17, %arg20] : memref -// KERNEL-NEXT: %2 = memref.load %arg18[%arg16, %arg17, %arg20] : memref -// KERNEL-NEXT: %3 = arith.addi %1, %2 : i32 -// KERNEL-NEXT: memref.store %3, %arg19[%arg20] : memref -// KERNEL-NEXT: } -// KERNEL-NEXT: neura.yield -// KERNEL-NEXT: } -// KERNEL-NEXT: } -// KERNEL-NEXT: } -// KERNEL-NEXT: taskflow.yield reads(%arg10, %arg11 : memref, memref) writes(%arg12 : memref) -// KERNEL-NEXT: } -// KERNEL-NEXT: %dependency_read_out_2:3, %dependency_write_out_3 = taskflow.task @Task_2 dependency_read_in(%dependency_write_out, %dependency_write_out_1, %arg9 : memref, memref, memref) dependency_write_in(%arg9 : memref) [original_read_memrefs(%arg5, %arg6, %arg9 : memref, memref, memref), original_write_memrefs(%arg9 : memref)] : (memref, memref, memref, memref) -> (memref, memref, memref, memref) { -// KERNEL-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref, %arg13: memref): -// KERNEL-NEXT: affine.for %arg14 = 0 to 4 { -// KERNEL-NEXT: affine.for %arg15 = 0 to 8 { -// KERNEL-NEXT: neura.kernel inputs(%arg10, %arg11, %arg13 : memref, memref, memref) { -// KERNEL-NEXT: ^bb0(%arg16: memref, %arg17: memref, %arg18: memref): -// KERNEL-NEXT: %c0 = arith.constant 0 : index -// KERNEL-NEXT: %c6 = arith.constant 6 : index -// KERNEL-NEXT: %c1 = arith.constant 1 : index -// KERNEL-NEXT: scf.for %arg19 = %c0 to %c6 step %c1 { -// KERNEL-NEXT: %1 = memref.load %arg16[%arg19] : memref -// KERNEL-NEXT: %2 = memref.load %arg17[%arg19] : memref -// KERNEL-NEXT: %3 = arith.addi %1, %2 : i32 -// KERNEL-NEXT: %4 = memref.load %arg18[%c0] : memref -// KERNEL-NEXT: %5 = arith.addi %4, %3 : i32 -// KERNEL-NEXT: memref.store %5, %arg18[%c0] : memref -// KERNEL-NEXT: } -// KERNEL-NEXT: neura.yield -// KERNEL-NEXT: } -// KERNEL-NEXT: } -// KERNEL-NEXT: } -// KERNEL-NEXT: taskflow.yield reads(%arg10, %arg11, %arg13 : memref, memref, memref) writes(%arg13 : memref) -// KERNEL-NEXT: } -// KERNEL-NEXT: %dependency_read_out_4, %dependency_write_out_5 = taskflow.task @Task_3 dependency_read_in(%arg3 : memref) dependency_write_in(%arg7 : memref) [original_read_memrefs(%arg3 : memref), original_write_memrefs(%arg7 : memref)] : (memref, memref) -> (memref, memref) { -// KERNEL-NEXT: ^bb0(%arg10: memref, %arg11: memref): -// KERNEL-NEXT: affine.for %arg12 = 0 to 4 { -// KERNEL-NEXT: neura.kernel inputs(%arg10, %arg12, %arg11 : memref, index, memref) { -// KERNEL-NEXT: ^bb0(%arg13: memref, %arg14: index, %arg15: memref): -// KERNEL-NEXT: %c0 = arith.constant 0 : index -// KERNEL-NEXT: %c7 = arith.constant 7 : index -// KERNEL-NEXT: %c1 = arith.constant 1 : index -// KERNEL-NEXT: scf.for %arg16 = %c0 to %c7 step %c1 { -// KERNEL-NEXT: %1 = memref.load %arg13[%arg14, %arg16] : memref -// KERNEL-NEXT: memref.store %1, %arg15[%arg16] : memref -// KERNEL-NEXT: } -// KERNEL-NEXT: neura.yield -// KERNEL-NEXT: } -// KERNEL-NEXT: } -// KERNEL-NEXT: taskflow.yield reads(%arg10 : memref) writes(%arg11 : memref) -// KERNEL-NEXT: } -// KERNEL-NEXT: %dependency_read_out_6:2, %dependency_write_out_7 = taskflow.task @Task_4 dependency_read_in(%arg4, %dependency_write_out_5 : memref, memref) dependency_write_in(%arg8 : memref) [original_read_memrefs(%arg4, %arg7 : memref, memref), original_write_memrefs(%arg8 : memref)] : (memref, memref, memref) -> (memref, memref, memref) { -// KERNEL-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): -// KERNEL-NEXT: affine.for %arg13 = 0 to 4 { -// KERNEL-NEXT: neura.kernel inputs(%arg10, %arg13, %arg11, %arg12 : memref, index, memref, memref) { -// KERNEL-NEXT: ^bb0(%arg14: memref, %arg15: index, %arg16: memref, %arg17: memref): -// KERNEL-NEXT: %c0 = arith.constant 0 : index -// KERNEL-NEXT: %c9 = arith.constant 9 : index -// KERNEL-NEXT: %c1 = arith.constant 1 : index -// KERNEL-NEXT: scf.for %arg18 = %c0 to %c9 step %c1 { -// KERNEL-NEXT: %1 = memref.load %arg14[%arg15, %arg18] : memref -// KERNEL-NEXT: %2 = memref.load %arg16[%arg18] : memref -// KERNEL-NEXT: %3 = arith.addi %1, %2 : i32 -// KERNEL-NEXT: memref.store %3, %arg17[%arg18] : memref -// KERNEL-NEXT: } -// KERNEL-NEXT: neura.yield -// KERNEL-NEXT: } -// KERNEL-NEXT: } -// KERNEL-NEXT: taskflow.yield reads(%arg10, %arg11 : memref, memref) writes(%arg12 : memref) -// KERNEL-NEXT: } -// KERNEL-NEXT: %0 = affine.load %dependency_write_out_3[0] : memref -// KERNEL-NEXT: return %0 : i32 -// KERNEL-NEXT: } -// KERNEL-NEXT:} +// KERNEL: module { +// KERNEL-NEXT: func.func @_Z21pureNestedLoopExamplePA8_A6_iPA8_A5_iS4_PA7_iPA9_iPiS9_S9_S9_S9_(%arg0: memref, %arg1: memref, %arg2: memref, %arg3: memref, %arg4: memref, %arg5: memref, %arg6: memref, %arg7: memref, %arg8: memref, %arg9: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { +// KERNEL-NEXT: %dependency_read_out, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0 : memref) dependency_write_in(%arg5 : memref) [original_read_memrefs(%arg0 : memref), original_write_memrefs(%arg5 : memref)] : (memref, memref) -> (memref, memref) { +// KERNEL-NEXT: ^bb0(%arg10: memref, %arg11: memref): +// KERNEL-NEXT: affine.for %arg12 = 0 to 4 { +// KERNEL-NEXT: affine.for %arg13 = 0 to 8 { +// KERNEL-NEXT: neura.kernel inputs(%arg10, %arg12, %arg13, %arg11 : memref, index, index, memref) { +// KERNEL-NEXT: ^bb0(%arg14: memref, %arg15: index, %arg16: index, %arg17: memref): +// KERNEL-NEXT: %c0 = arith.constant 0 : index +// KERNEL-NEXT: %c6 = arith.constant 6 : index +// KERNEL-NEXT: %c1 = arith.constant 1 : index +// KERNEL-NEXT: scf.for %arg18 = %c0 to %c6 step %c1 { +// KERNEL-NEXT: %1 = memref.load %arg14[%arg15, %arg16, %arg18] : memref +// KERNEL-NEXT: memref.store %1, %arg17[%arg18] : memref +// KERNEL-NEXT: } +// KERNEL-NEXT: neura.yield +// KERNEL-NEXT: } +// KERNEL-NEXT: } +// KERNEL-NEXT: } +// KERNEL-NEXT: taskflow.yield reads(%arg10 : memref) writes(%arg11 : memref) +// KERNEL-NEXT: } +// KERNEL-NEXT: %dependency_read_out_0:2, %dependency_write_out_1 = taskflow.task @Task_1 dependency_read_in(%arg1, %arg2 : memref, memref) dependency_write_in(%arg6 : memref) [original_read_memrefs(%arg1, %arg2 : memref, memref), original_write_memrefs(%arg6 : memref)] : (memref, memref, memref) -> (memref, memref, memref) { +// KERNEL-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): +// KERNEL-NEXT: affine.for %arg13 = 0 to 4 { +// KERNEL-NEXT: affine.for %arg14 = 0 to 8 { +// KERNEL-NEXT: neura.kernel inputs(%arg10, %arg13, %arg14, %arg11, %arg12 : memref, index, index, memref, memref) { +// KERNEL-NEXT: ^bb0(%arg15: memref, %arg16: index, %arg17: index, %arg18: memref, %arg19: memref): +// KERNEL-NEXT: %c0 = arith.constant 0 : index +// KERNEL-NEXT: %c5 = arith.constant 5 : index +// KERNEL-NEXT: %c1 = arith.constant 1 : index +// KERNEL-NEXT: scf.for %arg20 = %c0 to %c5 step %c1 { +// KERNEL-NEXT: %1 = memref.load %arg15[%arg16, %arg17, %arg20] : memref +// KERNEL-NEXT: %2 = memref.load %arg18[%arg16, %arg17, %arg20] : memref +// KERNEL-NEXT: %3 = arith.addi %1, %2 : i32 +// KERNEL-NEXT: memref.store %3, %arg19[%arg20] : memref +// KERNEL-NEXT: } +// KERNEL-NEXT: neura.yield +// KERNEL-NEXT: } +// KERNEL-NEXT: } +// KERNEL-NEXT: } +// KERNEL-NEXT: taskflow.yield reads(%arg10, %arg11 : memref, memref) writes(%arg12 : memref) +// KERNEL-NEXT: } +// KERNEL-NEXT: %dependency_read_out_2:3, %dependency_write_out_3 = taskflow.task @Task_2 dependency_read_in(%dependency_write_out, %dependency_write_out_1, %arg9 : memref, memref, memref) dependency_write_in(%arg9 : memref) [original_read_memrefs(%arg5, %arg6, %arg9 : memref, memref, memref), original_write_memrefs(%arg9 : memref)] : (memref, memref, memref, memref) -> (memref, memref, memref, memref) { +// KERNEL-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref, %arg13: memref): +// KERNEL-NEXT: affine.for %arg14 = 0 to 4 { +// KERNEL-NEXT: affine.for %arg15 = 0 to 8 { +// KERNEL-NEXT: neura.kernel inputs(%arg10, %arg11, %arg13 : memref, memref, memref) { +// KERNEL-NEXT: ^bb0(%arg16: memref, %arg17: memref, %arg18: memref): +// KERNEL-NEXT: %c0 = arith.constant 0 : index +// KERNEL-NEXT: %c6 = arith.constant 6 : index +// KERNEL-NEXT: %c1 = arith.constant 1 : index +// KERNEL-NEXT: scf.for %arg19 = %c0 to %c6 step %c1 { +// KERNEL-NEXT: %1 = memref.load %arg16[%arg19] : memref +// KERNEL-NEXT: %2 = memref.load %arg17[%arg19] : memref +// KERNEL-NEXT: %3 = arith.addi %1, %2 : i32 +// KERNEL-NEXT: %4 = memref.load %arg18[%c0] : memref +// KERNEL-NEXT: %5 = arith.addi %4, %3 : i32 +// KERNEL-NEXT: memref.store %5, %arg18[%c0] : memref +// KERNEL-NEXT: } +// KERNEL-NEXT: neura.yield +// KERNEL-NEXT: } +// KERNEL-NEXT: } +// KERNEL-NEXT: } +// KERNEL-NEXT: taskflow.yield reads(%arg10, %arg11, %arg13 : memref, memref, memref) writes(%arg13 : memref) +// KERNEL-NEXT: } +// KERNEL-NEXT: %dependency_read_out_4, %dependency_write_out_5 = taskflow.task @Task_3 dependency_read_in(%arg3 : memref) dependency_write_in(%arg7 : memref) [original_read_memrefs(%arg3 : memref), original_write_memrefs(%arg7 : memref)] : (memref, memref) -> (memref, memref) { +// KERNEL-NEXT: ^bb0(%arg10: memref, %arg11: memref): +// KERNEL-NEXT: affine.for %arg12 = 0 to 4 { +// KERNEL-NEXT: neura.kernel inputs(%arg10, %arg12, %arg11 : memref, index, memref) { +// KERNEL-NEXT: ^bb0(%arg13: memref, %arg14: index, %arg15: memref): +// KERNEL-NEXT: %c0 = arith.constant 0 : index +// KERNEL-NEXT: %c7 = arith.constant 7 : index +// KERNEL-NEXT: %c1 = arith.constant 1 : index +// KERNEL-NEXT: scf.for %arg16 = %c0 to %c7 step %c1 { +// KERNEL-NEXT: %1 = memref.load %arg13[%arg14, %arg16] : memref +// KERNEL-NEXT: memref.store %1, %arg15[%arg16] : memref +// KERNEL-NEXT: } +// KERNEL-NEXT: neura.yield +// KERNEL-NEXT: } +// KERNEL-NEXT: } +// KERNEL-NEXT: taskflow.yield reads(%arg10 : memref) writes(%arg11 : memref) +// KERNEL-NEXT: } +// KERNEL-NEXT: %dependency_read_out_6:2, %dependency_write_out_7 = taskflow.task @Task_4 dependency_read_in(%arg4, %dependency_write_out_5 : memref, memref) dependency_write_in(%arg8 : memref) [original_read_memrefs(%arg4, %arg7 : memref, memref), original_write_memrefs(%arg8 : memref)] : (memref, memref, memref) -> (memref, memref, memref) { +// KERNEL-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): +// KERNEL-NEXT: affine.for %arg13 = 0 to 4 { +// KERNEL-NEXT: neura.kernel inputs(%arg10, %arg13, %arg11, %arg12 : memref, index, memref, memref) { +// KERNEL-NEXT: ^bb0(%arg14: memref, %arg15: index, %arg16: memref, %arg17: memref): +// KERNEL-NEXT: %c0 = arith.constant 0 : index +// KERNEL-NEXT: %c9 = arith.constant 9 : index +// KERNEL-NEXT: %c1 = arith.constant 1 : index +// KERNEL-NEXT: scf.for %arg18 = %c0 to %c9 step %c1 { +// KERNEL-NEXT: %1 = memref.load %arg14[%arg15, %arg18] : memref +// KERNEL-NEXT: %2 = memref.load %arg16[%arg18] : memref +// KERNEL-NEXT: %3 = arith.addi %1, %2 : i32 +// KERNEL-NEXT: memref.store %3, %arg17[%arg18] : memref +// KERNEL-NEXT: } +// KERNEL-NEXT: neura.yield +// KERNEL-NEXT: } +// KERNEL-NEXT: } +// KERNEL-NEXT: taskflow.yield reads(%arg10, %arg11 : memref, memref) writes(%arg12 : memref) +// KERNEL-NEXT: } +// KERNEL-NEXT: %0 = affine.load %dependency_write_out_3[0] : memref +// KERNEL-NEXT: return %0 : i32 +// KERNEL-NEXT: } +// KERNEL-NEXT: } -// HYPERBLOCK: module { -// HYPERBLOCK-NEXT: func.func @_Z21pureNestedLoopExamplePA8_A6_iPA8_A5_iS4_PA7_iPA9_iPiS9_S9_S9_S9_(%arg0: memref, %arg1: memref, %arg2: memref, %arg3: memref, %arg4: memref, %arg5: memref, %arg6: memref, %arg7: memref, %arg8: memref, %arg9: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { -// HYPERBLOCK-NEXT: %dependency_read_out, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0 : memref) dependency_write_in(%arg5 : memref) [original_read_memrefs(%arg0 : memref), original_write_memrefs(%arg5 : memref)] : (memref, memref) -> (memref, memref) { -// HYPERBLOCK-NEXT: ^bb0(%arg10: memref, %arg11: memref): -// HYPERBLOCK-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index -// HYPERBLOCK-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index -// HYPERBLOCK-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 6 : index} : index -// HYPERBLOCK-NEXT: "taskflow.hyperblock"(%1, %2, %3) <{operandSegmentSizes = array}> ({ -// HYPERBLOCK-NEXT: ^bb0(%arg12: index, %arg13: index, %arg14: index): -// HYPERBLOCK-NEXT: %4 = memref.load %arg10[%arg12, %arg13, %arg14] : memref -// HYPERBLOCK-NEXT: memref.store %4, %arg11[%arg14] : memref -// HYPERBLOCK-NEXT: taskflow.hyperblock.yield -// HYPERBLOCK-NEXT: }) : (index, index, index) -> () -// HYPERBLOCK-NEXT: taskflow.yield reads(%arg10 : memref) writes(%arg11 : memref) -// HYPERBLOCK-NEXT: } -// HYPERBLOCK-NEXT: %dependency_read_out_0:2, %dependency_write_out_1 = taskflow.task @Task_1 dependency_read_in(%arg1, %arg2 : memref, memref) dependency_write_in(%arg6 : memref) [original_read_memrefs(%arg1, %arg2 : memref, memref), original_write_memrefs(%arg6 : memref)] : (memref, memref, memref) -> (memref, memref, memref) { -// HYPERBLOCK-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): -// HYPERBLOCK-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index -// HYPERBLOCK-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index -// HYPERBLOCK-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 5 : index} : index -// HYPERBLOCK-NEXT: "taskflow.hyperblock"(%1, %2, %3) <{operandSegmentSizes = array}> ({ -// HYPERBLOCK-NEXT: ^bb0(%arg13: index, %arg14: index, %arg15: index): -// HYPERBLOCK-NEXT: %4 = memref.load %arg10[%arg13, %arg14, %arg15] : memref -// HYPERBLOCK-NEXT: %5 = memref.load %arg11[%arg13, %arg14, %arg15] : memref -// HYPERBLOCK-NEXT: %6 = arith.addi %4, %5 : i32 -// HYPERBLOCK-NEXT: memref.store %6, %arg12[%arg15] : memref -// HYPERBLOCK-NEXT: taskflow.hyperblock.yield -// HYPERBLOCK-NEXT: }) : (index, index, index) -> () -// HYPERBLOCK-NEXT: taskflow.yield reads(%arg10, %arg11 : memref, memref) writes(%arg12 : memref) -// HYPERBLOCK-NEXT: } -// HYPERBLOCK-NEXT: %dependency_read_out_2:3, %dependency_write_out_3 = taskflow.task @Task_2 dependency_read_in(%dependency_write_out, %dependency_write_out_1, %arg9 : memref, memref, memref) dependency_write_in(%arg9 : memref) [original_read_memrefs(%arg5, %arg6, %arg9 : memref, memref, memref), original_write_memrefs(%arg9 : memref)] : (memref, memref, memref, memref) -> (memref, memref, memref, memref) { -// HYPERBLOCK-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref, %arg13: memref): -// HYPERBLOCK-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index -// HYPERBLOCK-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index -// HYPERBLOCK-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 6 : index} : index -// HYPERBLOCK-NEXT: "taskflow.hyperblock"(%3) <{operandSegmentSizes = array}> ({ -// HYPERBLOCK-NEXT: ^bb0(%arg14: index): -// HYPERBLOCK-NEXT: %4 = memref.load %arg10[%arg14] : memref -// HYPERBLOCK-NEXT: %5 = memref.load %arg11[%arg14] : memref -// HYPERBLOCK-NEXT: %6 = arith.addi %4, %5 : i32 -// HYPERBLOCK-NEXT: %c0 = arith.constant 0 : index -// HYPERBLOCK-NEXT: %7 = memref.load %arg13[%c0] : memref -// HYPERBLOCK-NEXT: %8 = arith.addi %7, %6 : i32 -// HYPERBLOCK-NEXT: %c0_8 = arith.constant 0 : index -// HYPERBLOCK-NEXT: memref.store %8, %arg13[%c0_8] : memref -// HYPERBLOCK-NEXT: taskflow.hyperblock.yield -// HYPERBLOCK-NEXT: }) : (index) -> () -// HYPERBLOCK-NEXT: taskflow.yield reads(%arg10, %arg11, %arg13 : memref, memref, memref) writes(%arg13 : memref) -// HYPERBLOCK-NEXT: } -// HYPERBLOCK-NEXT: %dependency_read_out_4, %dependency_write_out_5 = taskflow.task @Task_3 dependency_read_in(%arg3 : memref) dependency_write_in(%arg7 : memref) [original_read_memrefs(%arg3 : memref), original_write_memrefs(%arg7 : memref)] : (memref, memref) -> (memref, memref) { -// HYPERBLOCK-NEXT: ^bb0(%arg10: memref, %arg11: memref): -// HYPERBLOCK-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index -// HYPERBLOCK-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 7 : index} : index -// HYPERBLOCK-NEXT: "taskflow.hyperblock"(%1, %2) <{operandSegmentSizes = array}> ({ -// HYPERBLOCK-NEXT: ^bb0(%arg12: index, %arg13: index): -// HYPERBLOCK-NEXT: %3 = memref.load %arg10[%arg12, %arg13] : memref -// HYPERBLOCK-NEXT: memref.store %3, %arg11[%arg13] : memref -// HYPERBLOCK-NEXT: taskflow.hyperblock.yield -// HYPERBLOCK-NEXT: }) : (index, index) -> () -// HYPERBLOCK-NEXT: taskflow.yield reads(%arg10 : memref) writes(%arg11 : memref) -// HYPERBLOCK-NEXT: } -// HYPERBLOCK-NEXT: %dependency_read_out_6:2, %dependency_write_out_7 = taskflow.task @Task_4 dependency_read_in(%arg4, %dependency_write_out_5 : memref, memref) dependency_write_in(%arg8 : memref) [original_read_memrefs(%arg4, %arg7 : memref, memref), original_write_memrefs(%arg8 : memref)] : (memref, memref, memref) -> (memref, memref, memref) { -// HYPERBLOCK-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): -// HYPERBLOCK-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index -// HYPERBLOCK-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 9 : index} : index -// HYPERBLOCK-NEXT: "taskflow.hyperblock"(%1, %2) <{operandSegmentSizes = array}> ({ -// HYPERBLOCK-NEXT: ^bb0(%arg13: index, %arg14: index): -// HYPERBLOCK-NEXT: %3 = memref.load %arg10[%arg13, %arg14] : memref -// HYPERBLOCK-NEXT: %4 = memref.load %arg11[%arg14] : memref -// HYPERBLOCK-NEXT: %5 = arith.addi %3, %4 : i32 -// HYPERBLOCK-NEXT: memref.store %5, %arg12[%arg14] : memref -// HYPERBLOCK-NEXT: taskflow.hyperblock.yield -// HYPERBLOCK-NEXT: }) : (index, index) -> () -// HYPERBLOCK-NEXT: taskflow.yield reads(%arg10, %arg11 : memref, memref) writes(%arg12 : memref) -// HYPERBLOCK-NEXT: } -// HYPERBLOCK-NEXT: %0 = affine.load %dependency_write_out_3[0] : memref -// HYPERBLOCK-NEXT: return %0 : i32 -// HYPERBLOCK-NEXT: } -// HYPERBLOCK-NEXT:} +// HYPERBLOCK: module { +// HYPERBLOCK-NEXT: func.func @_Z21pureNestedLoopExamplePA8_A6_iPA8_A5_iS4_PA7_iPA9_iPiS9_S9_S9_S9_(%arg0: memref, %arg1: memref, %arg2: memref, %arg3: memref, %arg4: memref, %arg5: memref, %arg6: memref, %arg7: memref, %arg8: memref, %arg9: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { +// HYPERBLOCK-NEXT: %dependency_read_out, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0 : memref) dependency_write_in(%arg5 : memref) [original_read_memrefs(%arg0 : memref), original_write_memrefs(%arg5 : memref)] : (memref, memref) -> (memref, memref) { +// HYPERBLOCK-NEXT: ^bb0(%arg10: memref, %arg11: memref): +// HYPERBLOCK-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// HYPERBLOCK-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// HYPERBLOCK-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 6 : index} : index +// HYPERBLOCK-NEXT: "taskflow.hyperblock"(%1, %2, %3) <{operandSegmentSizes = array}> ({ +// HYPERBLOCK-NEXT: ^bb0(%arg12: index, %arg13: index, %arg14: index): +// HYPERBLOCK-NEXT: %4 = memref.load %arg10[%arg12, %arg13, %arg14] : memref +// HYPERBLOCK-NEXT: memref.store %4, %arg11[%arg14] : memref +// HYPERBLOCK-NEXT: taskflow.hyperblock.yield +// HYPERBLOCK-NEXT: }) : (index, index, index) -> () +// HYPERBLOCK-NEXT: taskflow.yield reads(%arg10 : memref) writes(%arg11 : memref) +// HYPERBLOCK-NEXT: } +// HYPERBLOCK-NEXT: %dependency_read_out_0:2, %dependency_write_out_1 = taskflow.task @Task_1 dependency_read_in(%arg1, %arg2 : memref, memref) dependency_write_in(%arg6 : memref) [original_read_memrefs(%arg1, %arg2 : memref, memref), original_write_memrefs(%arg6 : memref)] : (memref, memref, memref) -> (memref, memref, memref) { +// HYPERBLOCK-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): +// HYPERBLOCK-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// HYPERBLOCK-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// HYPERBLOCK-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 5 : index} : index +// HYPERBLOCK-NEXT: "taskflow.hyperblock"(%1, %2, %3) <{operandSegmentSizes = array}> ({ +// HYPERBLOCK-NEXT: ^bb0(%arg13: index, %arg14: index, %arg15: index): +// HYPERBLOCK-NEXT: %4 = memref.load %arg10[%arg13, %arg14, %arg15] : memref +// HYPERBLOCK-NEXT: %5 = memref.load %arg11[%arg13, %arg14, %arg15] : memref +// HYPERBLOCK-NEXT: %6 = arith.addi %4, %5 : i32 +// HYPERBLOCK-NEXT: memref.store %6, %arg12[%arg15] : memref +// HYPERBLOCK-NEXT: taskflow.hyperblock.yield +// HYPERBLOCK-NEXT: }) : (index, index, index) -> () +// HYPERBLOCK-NEXT: taskflow.yield reads(%arg10, %arg11 : memref, memref) writes(%arg12 : memref) +// HYPERBLOCK-NEXT: } +// HYPERBLOCK-NEXT: %dependency_read_out_2:3, %dependency_write_out_3 = taskflow.task @Task_2 dependency_read_in(%dependency_write_out, %dependency_write_out_1, %arg9 : memref, memref, memref) dependency_write_in(%arg9 : memref) [original_read_memrefs(%arg5, %arg6, %arg9 : memref, memref, memref), original_write_memrefs(%arg9 : memref)] : (memref, memref, memref, memref) -> (memref, memref, memref, memref) { +// HYPERBLOCK-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref, %arg13: memref): +// HYPERBLOCK-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// HYPERBLOCK-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// HYPERBLOCK-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 6 : index} : index +// HYPERBLOCK-NEXT: "taskflow.hyperblock"(%3) <{operandSegmentSizes = array}> ({ +// HYPERBLOCK-NEXT: ^bb0(%arg14: index): +// HYPERBLOCK-NEXT: %4 = memref.load %arg10[%arg14] : memref +// HYPERBLOCK-NEXT: %5 = memref.load %arg11[%arg14] : memref +// HYPERBLOCK-NEXT: %6 = arith.addi %4, %5 : i32 +// HYPERBLOCK-NEXT: %c0 = arith.constant 0 : index +// HYPERBLOCK-NEXT: %7 = memref.load %arg13[%c0] : memref +// HYPERBLOCK-NEXT: %8 = arith.addi %7, %6 : i32 +// HYPERBLOCK-NEXT: %c0_8 = arith.constant 0 : index +// HYPERBLOCK-NEXT: memref.store %8, %arg13[%c0_8] : memref +// HYPERBLOCK-NEXT: taskflow.hyperblock.yield +// HYPERBLOCK-NEXT: }) : (index) -> () +// HYPERBLOCK-NEXT: taskflow.yield reads(%arg10, %arg11, %arg13 : memref, memref, memref) writes(%arg13 : memref) +// HYPERBLOCK-NEXT: } +// HYPERBLOCK-NEXT: %dependency_read_out_4, %dependency_write_out_5 = taskflow.task @Task_3 dependency_read_in(%arg3 : memref) dependency_write_in(%arg7 : memref) [original_read_memrefs(%arg3 : memref), original_write_memrefs(%arg7 : memref)] : (memref, memref) -> (memref, memref) { +// HYPERBLOCK-NEXT: ^bb0(%arg10: memref, %arg11: memref): +// HYPERBLOCK-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// HYPERBLOCK-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 7 : index} : index +// HYPERBLOCK-NEXT: "taskflow.hyperblock"(%1, %2) <{operandSegmentSizes = array}> ({ +// HYPERBLOCK-NEXT: ^bb0(%arg12: index, %arg13: index): +// HYPERBLOCK-NEXT: %3 = memref.load %arg10[%arg12, %arg13] : memref +// HYPERBLOCK-NEXT: memref.store %3, %arg11[%arg13] : memref +// HYPERBLOCK-NEXT: taskflow.hyperblock.yield +// HYPERBLOCK-NEXT: }) : (index, index) -> () +// HYPERBLOCK-NEXT: taskflow.yield reads(%arg10 : memref) writes(%arg11 : memref) +// HYPERBLOCK-NEXT: } +// HYPERBLOCK-NEXT: %dependency_read_out_6:2, %dependency_write_out_7 = taskflow.task @Task_4 dependency_read_in(%arg4, %dependency_write_out_5 : memref, memref) dependency_write_in(%arg8 : memref) [original_read_memrefs(%arg4, %arg7 : memref, memref), original_write_memrefs(%arg8 : memref)] : (memref, memref, memref) -> (memref, memref, memref) { +// HYPERBLOCK-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): +// HYPERBLOCK-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// HYPERBLOCK-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 9 : index} : index +// HYPERBLOCK-NEXT: "taskflow.hyperblock"(%1, %2) <{operandSegmentSizes = array}> ({ +// HYPERBLOCK-NEXT: ^bb0(%arg13: index, %arg14: index): +// HYPERBLOCK-NEXT: %3 = memref.load %arg10[%arg13, %arg14] : memref +// HYPERBLOCK-NEXT: %4 = memref.load %arg11[%arg14] : memref +// HYPERBLOCK-NEXT: %5 = arith.addi %3, %4 : i32 +// HYPERBLOCK-NEXT: memref.store %5, %arg12[%arg14] : memref +// HYPERBLOCK-NEXT: taskflow.hyperblock.yield +// HYPERBLOCK-NEXT: }) : (index, index) -> () +// HYPERBLOCK-NEXT: taskflow.yield reads(%arg10, %arg11 : memref, memref) writes(%arg12 : memref) +// HYPERBLOCK-NEXT: } +// HYPERBLOCK-NEXT: %0 = affine.load %dependency_write_out_3[0] : memref +// HYPERBLOCK-NEXT: return %0 : i32 +// HYPERBLOCK-NEXT: } +// HYPERBLOCK-NEXT: } -// PLACEMENT: taskflow.task @Task_0 -// PLACEMENT-SAME: task_mapping_info = {cgra_positions = [{col = 0 : i32, row = 0 : i32}], read_sram_locations = [{col = 0 : i32, row = 0 : i32}], write_sram_locations = [{col = 0 : i32, row = 1 : i32}]} -// PLACEMENT: taskflow.task @Task_1 -// PLACEMENT-SAME: task_mapping_info = {cgra_positions = [{col = 1 : i32, row = 0 : i32}], read_sram_locations = [{col = 1 : i32, row = 0 : i32}, {col = 1 : i32, row = 0 : i32}], write_sram_locations = [{col = 1 : i32, row = 1 : i32}]} -// PLACEMENT: taskflow.task @Task_2 -// PLACEMENT-SAME: task_mapping_info = {cgra_positions = [{col = 0 : i32, row = 1 : i32}], read_sram_locations = [{col = 0 : i32, row = 1 : i32}, {col = 1 : i32, row = 1 : i32}, {col = 0 : i32, row = 1 : i32}], write_sram_locations = [{col = 0 : i32, row = 1 : i32}]} -// PLACEMENT: taskflow.task @Task_3 -// PLACEMENT-SAME: task_mapping_info = {cgra_positions = [{col = 2 : i32, row = 0 : i32}], read_sram_locations = [{col = 2 : i32, row = 0 : i32}], write_sram_locations = [{col = 2 : i32, row = 1 : i32}]} -// PLACEMENT: taskflow.task @Task_4 -// PLACEMENT-SAME: task_mapping_info = {cgra_positions = [{col = 1 : i32, row = 1 : i32}], read_sram_locations = [{col = 1 : i32, row = 1 : i32}, {col = 2 : i32, row = 1 : i32}], write_sram_locations = [{col = 1 : i32, row = 1 : i32}]} +// PLACEMENT: module { +// PLACEMENT-NEXT: func.func @_Z21pureNestedLoopExamplePA8_A6_iPA8_A5_iS4_PA7_iPA9_iPiS9_S9_S9_S9_(%arg0: memref, %arg1: memref, %arg2: memref, %arg3: memref, %arg4: memref, %arg5: memref, %arg6: memref, %arg7: memref, %arg8: memref, %arg9: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { +// PLACEMENT-NEXT: %dependency_read_out, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0 : memref) dependency_write_in(%arg5 : memref) [original_read_memrefs(%arg0 : memref), original_write_memrefs(%arg5 : memref)] {task_mapping_info = {cgra_positions = [{col = 0 : i32, row = 0 : i32}], read_sram_locations = [{col = 0 : i32, row = 0 : i32}], write_sram_locations = [{col = 0 : i32, row = 1 : i32}]}} : (memref, memref) -> (memref, memref) { +// PLACEMENT-NEXT: ^bb0(%arg10: memref, %arg11: memref): +// PLACEMENT-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// PLACEMENT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// PLACEMENT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 6 : index} : index +// PLACEMENT-NEXT: "taskflow.hyperblock"(%1, %2, %3) <{operandSegmentSizes = array}> ({ +// PLACEMENT-NEXT: ^bb0(%arg12: index, %arg13: index, %arg14: index): +// PLACEMENT-NEXT: %4 = memref.load %arg10[%arg12, %arg13, %arg14] : memref +// PLACEMENT-NEXT: memref.store %4, %arg11[%arg14] : memref +// PLACEMENT-NEXT: taskflow.hyperblock.yield +// PLACEMENT-NEXT: }) : (index, index, index) -> () +// PLACEMENT-NEXT: taskflow.yield reads(%arg10 : memref) writes(%arg11 : memref) +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: %dependency_read_out_0:2, %dependency_write_out_1 = taskflow.task @Task_1 dependency_read_in(%arg1, %arg2 : memref, memref) dependency_write_in(%arg6 : memref) [original_read_memrefs(%arg1, %arg2 : memref, memref), original_write_memrefs(%arg6 : memref)] {task_mapping_info = {cgra_positions = [{col = 1 : i32, row = 0 : i32}], read_sram_locations = [{col = 1 : i32, row = 0 : i32}, {col = 1 : i32, row = 0 : i32}], write_sram_locations = [{col = 1 : i32, row = 1 : i32}]}} : (memref, memref, memref) -> (memref, memref, memref) { +// PLACEMENT-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): +// PLACEMENT-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// PLACEMENT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// PLACEMENT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 5 : index} : index +// PLACEMENT-NEXT: "taskflow.hyperblock"(%1, %2, %3) <{operandSegmentSizes = array}> ({ +// PLACEMENT-NEXT: ^bb0(%arg13: index, %arg14: index, %arg15: index): +// PLACEMENT-NEXT: %4 = memref.load %arg10[%arg13, %arg14, %arg15] : memref +// PLACEMENT-NEXT: %5 = memref.load %arg11[%arg13, %arg14, %arg15] : memref +// PLACEMENT-NEXT: %6 = arith.addi %4, %5 : i32 +// PLACEMENT-NEXT: memref.store %6, %arg12[%arg15] : memref +// PLACEMENT-NEXT: taskflow.hyperblock.yield +// PLACEMENT-NEXT: }) : (index, index, index) -> () +// PLACEMENT-NEXT: taskflow.yield reads(%arg10, %arg11 : memref, memref) writes(%arg12 : memref) +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: %dependency_read_out_2:3, %dependency_write_out_3 = taskflow.task @Task_2 dependency_read_in(%dependency_write_out, %dependency_write_out_1, %arg9 : memref, memref, memref) dependency_write_in(%arg9 : memref) [original_read_memrefs(%arg5, %arg6, %arg9 : memref, memref, memref), original_write_memrefs(%arg9 : memref)] {task_mapping_info = {cgra_positions = [{col = 0 : i32, row = 1 : i32}], read_sram_locations = [{col = 0 : i32, row = 1 : i32}, {col = 1 : i32, row = 1 : i32}, {col = 0 : i32, row = 1 : i32}], write_sram_locations = [{col = 0 : i32, row = 1 : i32}]}} : (memref, memref, memref, memref) -> (memref, memref, memref, memref) { +// PLACEMENT-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref, %arg13: memref): +// PLACEMENT-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// PLACEMENT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// PLACEMENT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 6 : index} : index +// PLACEMENT-NEXT: "taskflow.hyperblock"(%3) <{operandSegmentSizes = array}> ({ +// PLACEMENT-NEXT: ^bb0(%arg14: index): +// PLACEMENT-NEXT: %4 = memref.load %arg10[%arg14] : memref +// PLACEMENT-NEXT: %5 = memref.load %arg11[%arg14] : memref +// PLACEMENT-NEXT: %6 = arith.addi %4, %5 : i32 +// PLACEMENT-NEXT: %c0 = arith.constant 0 : index +// PLACEMENT-NEXT: %7 = memref.load %arg13[%c0] : memref +// PLACEMENT-NEXT: %8 = arith.addi %7, %6 : i32 +// PLACEMENT-NEXT: %c0_8 = arith.constant 0 : index +// PLACEMENT-NEXT: memref.store %8, %arg13[%c0_8] : memref +// PLACEMENT-NEXT: taskflow.hyperblock.yield +// PLACEMENT-NEXT: }) : (index) -> () +// PLACEMENT-NEXT: taskflow.yield reads(%arg10, %arg11, %arg13 : memref, memref, memref) writes(%arg13 : memref) +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: %dependency_read_out_4, %dependency_write_out_5 = taskflow.task @Task_3 dependency_read_in(%arg3 : memref) dependency_write_in(%arg7 : memref) [original_read_memrefs(%arg3 : memref), original_write_memrefs(%arg7 : memref)] {task_mapping_info = {cgra_positions = [{col = 2 : i32, row = 0 : i32}], read_sram_locations = [{col = 2 : i32, row = 0 : i32}], write_sram_locations = [{col = 2 : i32, row = 1 : i32}]}} : (memref, memref) -> (memref, memref) { +// PLACEMENT-NEXT: ^bb0(%arg10: memref, %arg11: memref): +// PLACEMENT-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// PLACEMENT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 7 : index} : index +// PLACEMENT-NEXT: "taskflow.hyperblock"(%1, %2) <{operandSegmentSizes = array}> ({ +// PLACEMENT-NEXT: ^bb0(%arg12: index, %arg13: index): +// PLACEMENT-NEXT: %3 = memref.load %arg10[%arg12, %arg13] : memref +// PLACEMENT-NEXT: memref.store %3, %arg11[%arg13] : memref +// PLACEMENT-NEXT: taskflow.hyperblock.yield +// PLACEMENT-NEXT: }) : (index, index) -> () +// PLACEMENT-NEXT: taskflow.yield reads(%arg10 : memref) writes(%arg11 : memref) +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: %dependency_read_out_6:2, %dependency_write_out_7 = taskflow.task @Task_4 dependency_read_in(%arg4, %dependency_write_out_5 : memref, memref) dependency_write_in(%arg8 : memref) [original_read_memrefs(%arg4, %arg7 : memref, memref), original_write_memrefs(%arg8 : memref)] {task_mapping_info = {cgra_positions = [{col = 1 : i32, row = 1 : i32}], read_sram_locations = [{col = 1 : i32, row = 1 : i32}, {col = 2 : i32, row = 1 : i32}], write_sram_locations = [{col = 1 : i32, row = 1 : i32}]}} : (memref, memref, memref) -> (memref, memref, memref) { +// PLACEMENT-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): +// PLACEMENT-NEXT: %1 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// PLACEMENT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 9 : index} : index +// PLACEMENT-NEXT: "taskflow.hyperblock"(%1, %2) <{operandSegmentSizes = array}> ({ +// PLACEMENT-NEXT: ^bb0(%arg13: index, %arg14: index): +// PLACEMENT-NEXT: %3 = memref.load %arg10[%arg13, %arg14] : memref +// PLACEMENT-NEXT: %4 = memref.load %arg11[%arg14] : memref +// PLACEMENT-NEXT: %5 = arith.addi %3, %4 : i32 +// PLACEMENT-NEXT: memref.store %5, %arg12[%arg14] : memref +// PLACEMENT-NEXT: taskflow.hyperblock.yield +// PLACEMENT-NEXT: }) : (index, index) -> () +// PLACEMENT-NEXT: taskflow.yield reads(%arg10, %arg11 : memref, memref) writes(%arg12 : memref) +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: %0 = affine.load %dependency_write_out_3[0] : memref +// PLACEMENT-NEXT: return %0 : i32 +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: } -// RESOPT: taskflow.task @Task_1 -// RESOPT: cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 4 : i32, tile_shape = "1x2", trip_count = 160 : i32 -// RESOPT: taskflow.task @Task_0_Task_2_fused_Task_3_utilfused -// RESOPT: cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 5 : i32, tile_shape = "1x2", trip_count = 192 : i32 -// RESOPT: taskflow.task @Task_4 -// RESOPT: cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 4 : i32, tile_shape = "1x2", trip_count = 36 : i32 -// RESOPT: return +// RESOPT: module { +// RESOPT-NEXT: func.func @_Z21pureNestedLoopExamplePA8_A6_iPA8_A5_iS4_PA7_iPA9_iPiS9_S9_S9_S9_(%arg0: memref, %arg1: memref, %arg2: memref, %arg3: memref, %arg4: memref, %arg5: memref, %arg6: memref, %arg7: memref, %arg8: memref, %arg9: memref) -> i32 attributes {llvm.linkage = #llvm.linkage} { +// RESOPT-NEXT: %c0 = arith.constant 0 : index +// RESOPT-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_1 dependency_read_in(%arg1, %arg2 : memref, memref) dependency_write_in(%arg6 : memref) [original_read_memrefs(%arg1, %arg2 : memref, memref), original_write_memrefs(%arg6 : memref)] {cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 4 : i32, tile_shape = "1x2", trip_count = 160 : i32} : (memref, memref, memref) -> (memref, memref, memref) { +// RESOPT-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): +// RESOPT-NEXT: %1 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 2 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 5 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg10, %arg11, %arg12 : memref, memref, memref) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg13: memref, %arg14: memref, %arg15: memref): +// RESOPT-NEXT: %4 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : !neura.data +// RESOPT-NEXT: %5 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %6 = neura.counter {counter_id = 2 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 5 : index} : !neura.data +// RESOPT-NEXT: %7 = neura.load_indexed [%4, %5, %6 : !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %8 = neura.load_indexed [%4, %5, %6 : !neura.data, !neura.data, !neura.data] {lhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %9 = "neura.add"(%7, %8) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %9 to [%6 : !neura.data] {rhs_value = "%input2"} : !neura.data +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: taskflow.yield reads(%arg10, %arg11 : memref, memref) writes(%arg12 : memref) +// RESOPT-NEXT: } +// RESOPT-NEXT: %dependency_read_out_0:4, %dependency_write_out_1:2 = taskflow.task @Task_0_Task_2_fused_Task_3_utilfused dependency_read_in(%arg0, %dependency_write_out, %arg9, %arg3 : memref, memref, memref, memref) dependency_write_in(%arg9, %arg7 : memref, memref) [original_read_memrefs(%arg0, %arg6, %arg9, %arg3 : memref, memref, memref, memref), original_write_memrefs(%arg9, %arg7 : memref, memref)] {cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 5 : i32, tile_shape = "1x2", trip_count = 192 : i32} : (memref, memref, memref, memref, memref, memref) -> (memref, memref, memref, memref, memref, memref) { +// RESOPT-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref, %arg13: memref, %arg14: memref, %arg15: memref): +// RESOPT-NEXT: %1 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %3 = taskflow.counter parent(%2 : index) attributes {counter_id = 2 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 6 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg10, %arg11, %arg12, %arg13, %arg15 : memref, memref, memref, memref, memref) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg16: memref, %arg17: memref, %arg18: memref, %arg19: memref, %arg20: memref): +// RESOPT-NEXT: %6 = "neura.constant"() <{value = 0 : index}> : () -> !neura.data +// RESOPT-NEXT: %7 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : !neura.data +// RESOPT-NEXT: %8 = neura.counter {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %9 = neura.counter {counter_id = 2 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 6 : index} : !neura.data +// RESOPT-NEXT: %10 = neura.load_indexed [%7, %8, %9 : !neura.data, !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %11 = neura.load_indexed [%9 : !neura.data] {lhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %12 = "neura.add"(%10, %11) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: %13 = neura.load_indexed [%6 : !neura.data] {lhs_value = "%input2"} : !neura.data +// RESOPT-NEXT: %14 = "neura.add"(%13, %12) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %14 to [%6 : !neura.data] {rhs_value = "%input2"} : !neura.data +// RESOPT-NEXT: %15 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : !neura.data +// RESOPT-NEXT: %16 = neura.counter {counter_id = 1 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 7 : index} : !neura.data +// RESOPT-NEXT: %17 = neura.load_indexed [%15, %16 : !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: neura.store_indexed %17 to [%16 : !neura.data] {rhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: %4 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// RESOPT-NEXT: %5 = taskflow.counter parent(%4 : index) attributes {counter_id = 1 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 7 : index} : index +// RESOPT-NEXT: taskflow.yield reads(%arg10, %arg11, %arg12, %arg13 : memref, memref, memref, memref) writes(%arg14, %arg15 : memref, memref) +// RESOPT-NEXT: } +// RESOPT-NEXT: %dependency_read_out_2:2, %dependency_write_out_3 = taskflow.task @Task_4 dependency_read_in(%arg4, %dependency_write_out_1#1 : memref, memref) dependency_write_in(%arg8 : memref) [original_read_memrefs(%arg4, %arg7 : memref, memref), original_write_memrefs(%arg8 : memref)] {cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 4 : i32, tile_shape = "1x2", trip_count = 36 : i32} : (memref, memref, memref) -> (memref, memref, memref) { +// RESOPT-NEXT: ^bb0(%arg10: memref, %arg11: memref, %arg12: memref): +// RESOPT-NEXT: %1 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 1 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 9 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg10, %arg11, %arg12 : memref, memref, memref) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg13: memref, %arg14: memref, %arg15: memref): +// RESOPT-NEXT: %3 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 4 : index} : !neura.data +// RESOPT-NEXT: %4 = neura.counter {counter_id = 1 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 9 : index} : !neura.data +// RESOPT-NEXT: %5 = neura.load_indexed [%3, %4 : !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %6 = neura.load_indexed [%4 : !neura.data] {lhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %7 = "neura.add"(%5, %6) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %7 to [%4 : !neura.data] {rhs_value = "%input2"} : !neura.data +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: taskflow.yield reads(%arg10, %arg11 : memref, memref) writes(%arg12 : memref) +// RESOPT-NEXT: } +// RESOPT-NEXT: %0 = memref.load %dependency_write_out_1#0[%c0] : memref +// RESOPT-NEXT: return %0 : i32 +// RESOPT-NEXT: } +// RESOPT-NEXT: } diff --git a/test/multi-cgra/taskflow/parallel-nested/parallel-nested.mlir b/test/multi-cgra/taskflow/parallel-nested/parallel-nested.mlir index 707d6c9d..fa1135ad 100644 --- a/test/multi-cgra/taskflow/parallel-nested/parallel-nested.mlir +++ b/test/multi-cgra/taskflow/parallel-nested/parallel-nested.mlir @@ -77,7 +77,7 @@ module { } } -// SERIALIZED: module { +// SERIALIZED: module { // SERIALIZED-NEXT: func.func @parallel_nested_example(%arg0: memref<16xf32>, %arg1: memref<8x8xf32>, %arg2: memref<8x8xf32>, %arg3: memref<8x8xf32>, %arg4: f32) { // SERIALIZED-NEXT: affine.for %arg5 = 0 to 16 { // SERIALIZED-NEXT: %0 = affine.load %arg0[%arg5] : memref<16xf32> @@ -96,7 +96,7 @@ module { // SERIALIZED-NEXT: } // SERIALIZED-NEXT: } -// TASKFLOW: module { +// TASKFLOW: module { // TASKFLOW-NEXT: func.func @parallel_nested_example(%arg0: memref<16xf32>, %arg1: memref<8x8xf32>, %arg2: memref<8x8xf32>, %arg3: memref<8x8xf32>, %arg4: f32) { // TASKFLOW-NEXT: %dependency_read_out, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0 : memref<16xf32>) dependency_write_in(%arg0 : memref<16xf32>) value_inputs(%arg4 : f32) [original_read_memrefs(%arg0 : memref<16xf32>), original_write_memrefs(%arg0 : memref<16xf32>)] : (memref<16xf32>, memref<16xf32>, f32) -> (memref<16xf32>, memref<16xf32>) { // TASKFLOW-NEXT: ^bb0(%arg5: memref<16xf32>, %arg6: memref<16xf32>, %arg7: f32): @@ -123,7 +123,7 @@ module { // TASKFLOW-NEXT: } // TASKFLOW-NEXT: } -// HYPERBLOCK: module { +// HYPERBLOCK: module { // HYPERBLOCK-NEXT: func.func @parallel_nested_example(%arg0: memref<16xf32>, %arg1: memref<8x8xf32>, %arg2: memref<8x8xf32>, %arg3: memref<8x8xf32>, %arg4: f32) { // HYPERBLOCK-NEXT: %dependency_read_out, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0 : memref<16xf32>) dependency_write_in(%arg0 : memref<16xf32>) value_inputs(%arg4 : f32) [original_read_memrefs(%arg0 : memref<16xf32>), original_write_memrefs(%arg0 : memref<16xf32>)] : (memref<16xf32>, memref<16xf32>, f32) -> (memref<16xf32>, memref<16xf32>) { // HYPERBLOCK-NEXT: ^bb0(%arg5: memref<16xf32>, %arg6: memref<16xf32>, %arg7: f32): @@ -155,12 +155,62 @@ module { // HYPERBLOCK-NEXT: } // HYPERBLOCK-NEXT: } -// PLACEMENT: taskflow.task @Task_0 -// PLACEMENT-SAME: task_mapping_info = {cgra_positions = [{col = 0 : i32, row = 0 : i32}], read_sram_locations = [{col = 0 : i32, row = 0 : i32}], write_sram_locations = [{col = 0 : i32, row = 0 : i32}]} -// PLACEMENT: taskflow.task @Task_1 -// PLACEMENT-SAME: task_mapping_info = {cgra_positions = [{col = 1 : i32, row = 0 : i32}], read_sram_locations = [{col = 1 : i32, row = 0 : i32}, {col = 1 : i32, row = 0 : i32}], write_sram_locations = [{col = 1 : i32, row = 0 : i32}]} +// PLACEMENT: module { +// PLACEMENT-NEXT: func.func @parallel_nested_example(%arg0: memref<16xf32>, %arg1: memref<8x8xf32>, %arg2: memref<8x8xf32>, %arg3: memref<8x8xf32>, %arg4: f32) { +// PLACEMENT-NEXT: %dependency_read_out, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0 : memref<16xf32>) dependency_write_in(%arg0 : memref<16xf32>) value_inputs(%arg4 : f32) [original_read_memrefs(%arg0 : memref<16xf32>), original_write_memrefs(%arg0 : memref<16xf32>)] {task_mapping_info = {cgra_positions = [{col = 0 : i32, row = 0 : i32}], read_sram_locations = [{col = 0 : i32, row = 0 : i32}], write_sram_locations = [{col = 0 : i32, row = 0 : i32}]}} : (memref<16xf32>, memref<16xf32>, f32) -> (memref<16xf32>, memref<16xf32>) { +// PLACEMENT-NEXT: ^bb0(%arg5: memref<16xf32>, %arg6: memref<16xf32>, %arg7: f32): +// PLACEMENT-NEXT: %0 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 16 : index} : index +// PLACEMENT-NEXT: "taskflow.hyperblock"(%0) <{operandSegmentSizes = array}> ({ +// PLACEMENT-NEXT: ^bb0(%arg8: index): +// PLACEMENT-NEXT: %1 = memref.load %arg6[%arg8] : memref<16xf32> +// PLACEMENT-NEXT: %2 = arith.mulf %1, %arg7 : f32 +// PLACEMENT-NEXT: memref.store %2, %arg6[%arg8] : memref<16xf32> +// PLACEMENT-NEXT: taskflow.hyperblock.yield +// PLACEMENT-NEXT: }) : (index) -> () +// PLACEMENT-NEXT: taskflow.yield reads(%arg6 : memref<16xf32>) writes(%arg6 : memref<16xf32>) +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: %dependency_read_out_0:2, %dependency_write_out_1 = taskflow.task @Task_1 dependency_read_in(%arg1, %arg2 : memref<8x8xf32>, memref<8x8xf32>) dependency_write_in(%arg3 : memref<8x8xf32>) [original_read_memrefs(%arg1, %arg2 : memref<8x8xf32>, memref<8x8xf32>), original_write_memrefs(%arg3 : memref<8x8xf32>)] {task_mapping_info = {cgra_positions = [{col = 1 : i32, row = 0 : i32}], read_sram_locations = [{col = 1 : i32, row = 0 : i32}, {col = 1 : i32, row = 0 : i32}], write_sram_locations = [{col = 1 : i32, row = 0 : i32}]}} : (memref<8x8xf32>, memref<8x8xf32>, memref<8x8xf32>) -> (memref<8x8xf32>, memref<8x8xf32>, memref<8x8xf32>) { +// PLACEMENT-NEXT: ^bb0(%arg5: memref<8x8xf32>, %arg6: memref<8x8xf32>, %arg7: memref<8x8xf32>): +// PLACEMENT-NEXT: %0 = taskflow.counter attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// PLACEMENT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// PLACEMENT-NEXT: "taskflow.hyperblock"(%0, %1) <{operandSegmentSizes = array}> ({ +// PLACEMENT-NEXT: ^bb0(%arg8: index, %arg9: index): +// PLACEMENT-NEXT: %2 = memref.load %arg5[%arg8, %arg9] : memref<8x8xf32> +// PLACEMENT-NEXT: %3 = memref.load %arg6[%arg8, %arg9] : memref<8x8xf32> +// PLACEMENT-NEXT: %4 = arith.mulf %2, %3 : f32 +// PLACEMENT-NEXT: memref.store %4, %arg7[%arg8, %arg9] : memref<8x8xf32> +// PLACEMENT-NEXT: taskflow.hyperblock.yield +// PLACEMENT-NEXT: }) : (index, index) -> () +// PLACEMENT-NEXT: taskflow.yield reads(%arg5, %arg6 : memref<8x8xf32>, memref<8x8xf32>) writes(%arg7 : memref<8x8xf32>) +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: return +// PLACEMENT-NEXT: } +// PLACEMENT-NEXT: } -// RESOPT: taskflow.task @Task_0_Task_1_utilfused -// RESOPT: cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 4 : i32, tile_shape = "1x2", trip_count = 64 : i32 -// RESOPT: return +// RESOPT: module { +// RESOPT-NEXT: func.func @parallel_nested_example(%arg0: memref<16xf32>, %arg1: memref<8x8xf32>, %arg2: memref<8x8xf32>, %arg3: memref<8x8xf32>, %arg4: f32) { +// RESOPT-NEXT: %dependency_read_out:3, %dependency_write_out:2 = taskflow.task @Task_0_Task_1_utilfused dependency_read_in(%arg0, %arg1, %arg2 : memref<16xf32>, memref<8x8xf32>, memref<8x8xf32>) dependency_write_in(%arg0, %arg3 : memref<16xf32>, memref<8x8xf32>) value_inputs(%arg4 : f32) [original_read_memrefs(%arg0, %arg1, %arg2 : memref<16xf32>, memref<8x8xf32>, memref<8x8xf32>), original_write_memrefs(%arg0, %arg3 : memref<16xf32>, memref<8x8xf32>)] {cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 4 : i32, tile_shape = "1x2", trip_count = 64 : i32} : (memref<16xf32>, memref<8x8xf32>, memref<8x8xf32>, memref<16xf32>, memref<8x8xf32>, f32) -> (memref<16xf32>, memref<8x8xf32>, memref<8x8xf32>, memref<16xf32>, memref<8x8xf32>) { +// RESOPT-NEXT: ^bb0(%arg5: memref<16xf32>, %arg6: memref<8x8xf32>, %arg7: memref<8x8xf32>, %arg8: memref<16xf32>, %arg9: memref<8x8xf32>, %arg10: f32): +// RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 16 : index} : index +// RESOPT-NEXT: neura.kernel inputs(%arg8, %arg10, %arg6, %arg7, %arg9 : memref<16xf32>, f32, memref<8x8xf32>, memref<8x8xf32>, memref<8x8xf32>) attributes {accelerator = "neura", dataflow_mode = "predicate"} { +// RESOPT-NEXT: ^bb0(%arg11: memref<16xf32>, %arg12: f32, %arg13: memref<8x8xf32>, %arg14: memref<8x8xf32>, %arg15: memref<8x8xf32>): +// RESOPT-NEXT: %3 = neura.counter {counter_id = 0 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 16 : index} : !neura.data +// RESOPT-NEXT: %4 = neura.load_indexed [%3 : !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %5 = "neura.fmul"(%4) {rhs_value = "%input1"} : (!neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %5 to [%3 : !neura.data] {rhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %6 = neura.counter {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %7 = neura.counter {counter_id = 1 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : !neura.data +// RESOPT-NEXT: %8 = neura.load_indexed [%6, %7 : !neura.data, !neura.data] {lhs_value = "%input0"} : !neura.data +// RESOPT-NEXT: %9 = neura.load_indexed [%6, %7 : !neura.data, !neura.data] {lhs_value = "%input1"} : !neura.data +// RESOPT-NEXT: %10 = "neura.fmul"(%8, %9) : (!neura.data, !neura.data) -> !neura.data +// RESOPT-NEXT: neura.store_indexed %10 to [%6, %7 : !neura.data, !neura.data] {rhs_value = "%input2"} : !neura.data +// RESOPT-NEXT: neura.yield {yield_type = "void"} +// RESOPT-NEXT: } +// RESOPT-NEXT: %1 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: %2 = taskflow.counter parent(%1 : index) attributes {counter_id = 1 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index +// RESOPT-NEXT: taskflow.yield reads(%arg5, %arg6, %arg7 : memref<16xf32>, memref<8x8xf32>, memref<8x8xf32>) writes(%arg8, %arg9 : memref<16xf32>, memref<8x8xf32>) +// RESOPT-NEXT: } +// RESOPT-NEXT: return +// RESOPT-NEXT: } +// RESOPT-NEXT: } diff --git a/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir b/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir index 97c007d0..9aa6219e 100644 --- a/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir +++ b/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir @@ -755,7 +755,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // RESOPT-NEXT: %11 = taskflow.counter parent(%10 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index // RESOPT-NEXT: taskflow.yield reads(%arg1 : memref<1x64x8x8xf32>) writes(%arg2, %arg3, %arg4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) // RESOPT-NEXT: } -// RESOPT-NEXT: %dependency_read_out_5:2, %dependency_write_out_6 = taskflow.task @Task_3 dependency_read_in(%dependency_write_out#0, %dependency_write_out#2 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) dependency_write_in(%dependency_write_out#2 : memref<1x8x8x64xf32>) value_inputs(%cst_0 : f32) [original_read_memrefs(%alloc_3, %alloc_4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>), original_write_memrefs(%alloc_4 : memref<1x8x8x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 6 : i32, tile_shape = "1x2", trip_count = 2359296 : i32} : (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { +// RESOPT-NEXT: %dependency_read_out_5:2, %dependency_write_out_6 = taskflow.task @Task_3 dependency_read_in(%dependency_write_out#0, %dependency_write_out#2 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) dependency_write_in(%dependency_write_out#2 : memref<1x8x8x64xf32>) value_inputs(%cst_0 : f32) [original_read_memrefs(%alloc_3, %alloc_4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>), original_write_memrefs(%alloc_4 : memref<1x8x8x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 6 : i32, tile_shape = "1x2", trip_count = 2359296 : i32} : (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { // RESOPT-NEXT: ^bb0(%arg1: memref<1x10x10x64xf32>, %arg2: memref<1x8x8x64xf32>, %arg3: memref<1x8x8x64xf32>, %arg4: f32): // RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index // RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index @@ -787,7 +787,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // RESOPT-NEXT: %alloc_7 = memref.alloc() {alignment = 64 : i64} : memref<1x64x8x8xf32> // RESOPT-NEXT: %alloc_8 = memref.alloc() {alignment = 64 : i64} : memref<1x8x8x64xf32> // RESOPT-NEXT: %alloc_9 = memref.alloc() {alignment = 64 : i64} : memref<1x10x10x64xf32> -// RESOPT-NEXT: %dependency_read_out_10, %dependency_write_out_11:2 = taskflow.task @Task_4_Task_5_fused_Task_7_utilfused dependency_read_in(%dependency_write_out_6 : memref<1x8x8x64xf32>) dependency_write_in(%alloc_7, %alloc_9 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) value_inputs(%cst_1, %cst_2 : f32, f32) [original_read_memrefs(%alloc_4 : memref<1x8x8x64xf32>), original_write_memrefs(%alloc_7, %alloc_9 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 4 : i32, steps = 7 : i32, tile_shape = "1x2", trip_count = 6400 : i32} : (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>, f32, f32) -> (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) { +// RESOPT-NEXT: %dependency_read_out_10, %dependency_write_out_11:2 = taskflow.task @Task_4_Task_5_fused_Task_7_utilfused dependency_read_in(%dependency_write_out_6 : memref<1x8x8x64xf32>) dependency_write_in(%alloc_7, %alloc_9 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) value_inputs(%cst_1, %cst_2 : f32, f32) [original_read_memrefs(%alloc_4 : memref<1x8x8x64xf32>), original_write_memrefs(%alloc_7, %alloc_9 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 7 : i32, tile_shape = "1x2", trip_count = 6400 : i32} : (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>, f32, f32) -> (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) { // RESOPT-NEXT: ^bb0(%arg1: memref<1x8x8x64xf32>, %arg2: memref<1x64x8x8xf32>, %arg3: memref<1x10x10x64xf32>, %arg4: f32, %arg5: f32): // RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index // RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index @@ -850,7 +850,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // RESOPT-NEXT: %7 = taskflow.counter parent(%6 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index // RESOPT-NEXT: taskflow.yield reads(%arg1 : memref<1x64x8x8xf32>) writes(%arg2, %arg3 : memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) // RESOPT-NEXT: } -// RESOPT-NEXT: %dependency_read_out_15:2, %dependency_write_out_16 = taskflow.task @Task_9 dependency_read_in(%dependency_write_out_11#1, %dependency_write_out_14#1 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) dependency_write_in(%dependency_write_out_14#1 : memref<1x8x8x64xf32>) value_inputs(%cst : f32) [original_read_memrefs(%alloc_9, %alloc_12 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>), original_write_memrefs(%alloc_12 : memref<1x8x8x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 6 : i32, tile_shape = "1x2", trip_count = 2359296 : i32} : (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { +// RESOPT-NEXT: %dependency_read_out_15:2, %dependency_write_out_16 = taskflow.task @Task_9 dependency_read_in(%dependency_write_out_11#1, %dependency_write_out_14#1 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) dependency_write_in(%dependency_write_out_14#1 : memref<1x8x8x64xf32>) value_inputs(%cst : f32) [original_read_memrefs(%alloc_9, %alloc_12 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>), original_write_memrefs(%alloc_12 : memref<1x8x8x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 6 : i32, tile_shape = "1x2", trip_count = 2359296 : i32} : (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { // RESOPT-NEXT: ^bb0(%arg1: memref<1x10x10x64xf32>, %arg2: memref<1x8x8x64xf32>, %arg3: memref<1x8x8x64xf32>, %arg4: f32): // RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index // RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index diff --git a/test/neura/ctrl/branch_for.mlir b/test/neura/ctrl/branch_for.mlir index dfd2e27f..fcc69fd9 100644 --- a/test/neura/ctrl/branch_for.mlir +++ b/test/neura/ctrl/branch_for.mlir @@ -205,7 +205,7 @@ func.func @loop_test() -> f32 { // MOV-NEXT: neura.yield // MOV-NEXT: } -// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // YAML: array_config: // YAML-NEXT: columns: 4 @@ -279,10 +279,10 @@ func.func @loop_test() -> f32 { // YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" @@ -324,8 +324,6 @@ func.func @loop_test() -> f32 { // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "ICMP_SLT" @@ -338,7 +336,7 @@ func.func @loop_test() -> f32 { // YAML-NEXT: - operand: "#10" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" @@ -394,7 +392,7 @@ func.func @loop_test() -> f32 { // YAML-NEXT: - operand: "SOUTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: @@ -405,7 +403,7 @@ func.func @loop_test() -> f32 { // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "SOUTH" @@ -466,17 +464,17 @@ func.func @loop_test() -> f32 { // ASM-NEXT: } (idx_per_ii=3) // ASM: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=4, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=4, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { // ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [$0] (t=1, inv_iters=0) // ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: ICMP_SLT, [$0], [#10] -> [$0], [WEST, RED], [EAST, RED] (t=3, inv_iters=0) +// ASM-NEXT: ICMP_SLT, [$0], [#10] -> [$8], [WEST, RED], [EAST, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM: PE(2,0): // ASM-NEXT: { @@ -487,10 +485,10 @@ func.func @loop_test() -> f32 { // ASM-NEXT: FADD, [SOUTH, RED], [#3.000000] -> [$0], [EAST, RED] (t=4, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=5, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=5, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$1] -> [SOUTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM: PE(1,1): // ASM-NEXT: { diff --git a/test/neura/for_loop/relu_test.mlir b/test/neura/for_loop/relu_test.mlir index a34e4fd7..33f12174 100644 --- a/test/neura/for_loop/relu_test.mlir +++ b/test/neura/for_loop/relu_test.mlir @@ -135,4 +135,4 @@ // CTRL2DATA-NEXT: } -// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { \ No newline at end of file +// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { \ No newline at end of file diff --git a/test/neura/fusion/test.mlir b/test/neura/fusion/test.mlir index 19c4c7ff..c0b34fd1 100644 --- a/test/neura/fusion/test.mlir +++ b/test/neura/fusion/test.mlir @@ -33,7 +33,7 @@ // CHECK-FUSED-DAG: %93 = "neura.mul_add"(%90, %91, %92) : (!neura.data, !neura.data, !neura.data) -> !neura.data // CHECK-FUSED-DAG: %106 = "neura.mul_add"(%103, %104, %105) : (!neura.data, !neura.data, !neura.data) -> !neura.data -// CHECK-MAPPING: mapping_info = {compiled_ii = 13 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} +// CHECK-MAPPING: mapping_info = {compiled_ii = {{[0-9]+}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} // RUN: mlir-neura-opt --architecture-spec=%S/../../arch_spec/architecture.yaml --verify-each=true --mlir-print-ir-after-failure \ // RUN: --assign-accelerator \ @@ -111,7 +111,7 @@ // RUN: --insert-data-mov \ // RUN: --map-to-accelerator="mapping-strategy=heuristic backtrack-config=simple" %t-kernel.mlir | FileCheck %s --check-prefix=CHECK-ITER-MERGE-PATTERN-MAPPING -// CHECK-ITER-MERGE-PATTERN-MAPPING: mapping_info = {compiled_ii = 11 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 8 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} +// CHECK-ITER-MERGE-PATTERN-MAPPING: mapping_info = {compiled_ii = {{[0-9]+}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 8 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} // RUN: mlir-neura-opt --architecture-spec=%S/../../arch_spec/architecture.yaml --verify-each=true --mlir-print-ir-after-failure \ // RUN: --assign-accelerator \ From dac5ca891a743fed6fa650c84d8f32fea1c317f6 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Wed, 25 Mar 2026 05:14:56 +0800 Subject: [PATCH 12/26] Updated tests --- .../c2llvm2mlir/global_mem_address/kernel.mlir | 2 +- test/Conversion/c2llvm2mlir/nested_loop/test.mlir | 9 ++++----- test/code_gen/test_code_generate.mlir | 2 +- test/code_gen/test_code_generate_king_mesh.mlir | 2 +- test/compiler_e2e/fir/fir_kernel.mlir | 2 +- test/compiler_e2e/visualize/test.mlir | 2 +- .../perfect_nested/perfect_nested.mlir | 2 +- test/controflow_fuse/simple_loop/simple_loop.mlir | 2 +- .../simple_loop_reduction/simple_loop_reduction.mlir | 2 +- test/e2e/axpy/axpy_kernel.mlir | 2 +- test/e2e/bicg/bicg_int_kernel.mlir | 2 +- test/e2e/bicg/bicg_kernel.mlir | 11 ++++------- test/e2e/fft/fft_kernel.mlir | 2 +- test/e2e/fir/fir_kernel.mlir | 5 ++--- test/e2e/fir/fir_kernel_vec.mlir | 2 +- test/e2e/gemm/gemm_kernel.mlir | 2 +- test/e2e/gemv/gemv_kernel.mlir | 2 +- test/e2e/histogram/histogram_kernel.mlir | 2 +- test/e2e/relu/relu_kernel.mlir | 2 +- test/e2e/spmv/spmv_kernel.mlir | 2 +- test/mapping_quality/branch_for.mlir | 2 +- test/mapping_quality/tiny_loop.mlir | 4 ++-- test/multi-cgra/kernel_mapping/fir/fir.mlir | 2 +- .../kernel_mapping/loop-in-kernel/loop-in-kernel.mlir | 2 +- test/multi-cgra/kernel_mapping/relu/relu.mlir | 2 +- test/neura/ctrl/branch_for.mlir | 2 +- test/neura/for_loop/relu_test.mlir | 2 +- test/neura/fusion/test.mlir | 4 ++-- 28 files changed, 37 insertions(+), 42 deletions(-) diff --git a/test/Conversion/c2llvm2mlir/global_mem_address/kernel.mlir b/test/Conversion/c2llvm2mlir/global_mem_address/kernel.mlir index a5eccf6e..4bbca686 100644 --- a/test/Conversion/c2llvm2mlir/global_mem_address/kernel.mlir +++ b/test/Conversion/c2llvm2mlir/global_mem_address/kernel.mlir @@ -19,7 +19,7 @@ // RUN: FileCheck %s --input-file=%t-dataflow.mlir --check-prefix=DATAFLOW // DATAFLOW: llvm.mlir.global external hidden unnamed_addr @run_gemv_relu_gemv.y() {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<4 x i32> -// DATAFLOW-NEXT: func.func @kernel_gemv_relu_gemv() -> (i32 {llvm.range = #llvm.constant_range}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// DATAFLOW-NEXT: func.func @kernel_gemv_relu_gemv() -> (i32 {llvm.range = #llvm.constant_range}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // DATAFLOW-NEXT: %0 = "neura.constant"() <{value = @run_gemv_relu_gemv.y}> : () -> !neura.data // DATAFLOW-NEXT: %1 = "neura.constant"() <{value = 0 : i8}> : () -> !neura.data // DATAFLOW-NEXT: %2 = "neura.constant"() <{value = 16 : i64}> : () -> !neura.data diff --git a/test/Conversion/c2llvm2mlir/nested_loop/test.mlir b/test/Conversion/c2llvm2mlir/nested_loop/test.mlir index 2999122f..9d40e0cf 100644 --- a/test/Conversion/c2llvm2mlir/nested_loop/test.mlir +++ b/test/Conversion/c2llvm2mlir/nested_loop/test.mlir @@ -32,12 +32,11 @@ // CHECK-LLVM2NEURA: %188 = neura.sext %187 : !neura.data -> !neura.data // CHECK-LLVM2NEURA: %207 = "neura.mul"(%205, %206) : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP: module attributes {dlti.dl_spec = {{.*}}} { -// CHECK-LLVM2NEURA-MAP-NEXT: llvm.mlir.global external @input(dense<1> : tensor<32xi32>) {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<32 x i32> +// CHECK-LLVM2NEURA-MAP: llvm.mlir.global external @input(dense<1> : tensor<32xi32>) {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<32 x i32> // CHECK-LLVM2NEURA-MAP-NEXT: llvm.mlir.global external @output(dense<0> : tensor<32xi32>) {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<32 x i32> // CHECK-LLVM2NEURA-MAP-NEXT: llvm.mlir.global external @coefficients(dense<[25, 150, 375, -225, 50, 75, -300, 125, 25, 150, 375, -225, 50, 75, -300, 125, 25, 150, 375, -225, 50, 75, -300, 125, 25, 150, 375, -225, 50, 75, -300, 125]> : tensor<32xi32>) {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<32 x i32> // CHECK-LLVM2NEURA-MAP-NEXT: llvm.mlir.global private unnamed_addr constant @".str"("output: %d\0A\00") {addr_space = 0 : i32, alignment = 1 : i64, dso_local} -// CHECK-LLVM2NEURA-MAP-NEXT: llvm.func @main() -> (i32 {llvm.noundef}) attributes {frame_pointer = #llvm.framePointerKind, no_inline, optimize_none, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic"} { +// CHECK-LLVM2NEURA-MAP-NEXT: llvm.func @main() -> (i32 {llvm.noundef}) attributes {frame_pointer = #llvm.framePointerKind, no_inline, optimize_none, passthrough = ["mustprogress", "norecurse", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic"} { // CHECK-LLVM2NEURA-MAP-NEXT: %0 = llvm.mlir.constant(1 : i32) : i32 // CHECK-LLVM2NEURA-MAP-NEXT: %1 = llvm.mlir.constant(0 : i32) : i32 // CHECK-LLVM2NEURA-MAP-NEXT: %2 = llvm.mlir.addressof @input : !llvm.ptr @@ -51,7 +50,7 @@ // CHECK-LLVM2NEURA-MAP-NEXT: %9 = llvm.call @printf(%5, %8) vararg(!llvm.func) : (!llvm.ptr, i32) -> i32 // CHECK-LLVM2NEURA-MAP-NEXT: llvm.return %1 : i32 // CHECK-LLVM2NEURA-MAP-NEXT: } -// CHECK-LLVM2NEURA-MAP-NEXT: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.noundef}, %arg1: !llvm.ptr {llvm.noundef}, %arg2: !llvm.ptr {llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", frame_pointer = #llvm.framePointerKind, linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, no_inline, no_unwind, optimize_none, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 0 : i64, visibility_ = 0 : i64} { +// CHECK-LLVM2NEURA-MAP-NEXT: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.noundef}, %arg1: !llvm.ptr {llvm.noundef}, %arg2: !llvm.ptr {llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", frame_pointer = #llvm.framePointerKind, linkage = #llvm.linkage, mapping_info = {compiled_ii = 11 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, no_inline, no_unwind, optimize_none, passthrough = ["mustprogress", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 0 : i64, visibility_ = 0 : i64} { // CHECK-LLVM2NEURA-MAP-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> {dfg_id = 1 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 1 : i32}]} : () -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %2 = "neura.constant"() <{value = "%arg2"}> {dfg_id = 2 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data @@ -310,5 +309,5 @@ // CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %149 -> %97 {dfg_id = 175 : i32, mapping_locs = [{id = 458 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 458 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 458 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 458 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 458 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 458 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 458 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 458 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 458 : i32, index_per_ii = 3 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 458 : i32, index_per_ii = 4 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: neura.yield {dfg_id = 24 : i32} // CHECK-LLVM2NEURA-MAP-NEXT: } -// CHECK-LLVM2NEURA-MAP-NEXT: llvm.func @printf(!llvm.ptr {llvm.noundef}, ...) -> i32 attributes {frame_pointer = #llvm.framePointerKind, passthrough = {{.*}}, ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic"} +// CHECK-LLVM2NEURA-MAP-NEXT: llvm.func @printf(!llvm.ptr {llvm.noundef}, ...) -> i32 attributes {frame_pointer = #llvm.framePointerKind, passthrough = {{[[]}}["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic"} // CHECK-LLVM2NEURA-MAP-NEXT: } diff --git a/test/code_gen/test_code_generate.mlir b/test/code_gen/test_code_generate.mlir index a26c6311..adf0fe23 100644 --- a/test/code_gen/test_code_generate.mlir +++ b/test/code_gen/test_code_generate.mlir @@ -32,7 +32,7 @@ func.func @loop_test() -> f32 { ^exit(%result: f32): return %result : f32 } -// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // MAPPING-NEXT: %0 = "neura.constant"() <{value = 10 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"(%1) {dfg_id = 16 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data diff --git a/test/code_gen/test_code_generate_king_mesh.mlir b/test/code_gen/test_code_generate_king_mesh.mlir index 5113a785..3df296d2 100644 --- a/test/code_gen/test_code_generate_king_mesh.mlir +++ b/test/code_gen/test_code_generate_king_mesh.mlir @@ -32,7 +32,7 @@ func.func @loop_test_king_mesh() -> f32 { return %result : f32 } -// MAPPING: func.func @loop_test_king_mesh() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPING: func.func @loop_test_king_mesh() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // MAPPING-NEXT: %0 = "neura.constant"() <{value = 10 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"(%1) {dfg_id = 16 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data diff --git a/test/compiler_e2e/fir/fir_kernel.mlir b/test/compiler_e2e/fir/fir_kernel.mlir index f50be71d..8cdcc747 100644 --- a/test/compiler_e2e/fir/fir_kernel.mlir +++ b/test/compiler_e2e/fir/fir_kernel.mlir @@ -8,7 +8,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data diff --git a/test/compiler_e2e/visualize/test.mlir b/test/compiler_e2e/visualize/test.mlir index bb0b8cf4..50b1c32a 100644 --- a/test/compiler_e2e/visualize/test.mlir +++ b/test/compiler_e2e/visualize/test.mlir @@ -14,7 +14,7 @@ func.func @test_print_op_graph(%a: f32, %b: f32) -> f32 { } // MAPPING: module -// MAPPING: func.func @test_print_op_graph(%arg0: f32, %arg1: f32) -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 1 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} +// MAPPING: func.func @test_print_op_graph(%arg0: f32, %arg1: f32) -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 1 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 1 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} // MAPPING: %0 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING: %1 = "neura.data_mov"(%0) {dfg_id = 2 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data // MAPPING: %2 = "neura.fadd"(%1) {dfg_id = 3 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = "%arg1"} : (!neura.data) -> !neura.data diff --git a/test/controflow_fuse/perfect_nested/perfect_nested.mlir b/test/controflow_fuse/perfect_nested/perfect_nested.mlir index 8aa15477..bbc5877e 100644 --- a/test/controflow_fuse/perfect_nested/perfect_nested.mlir +++ b/test/controflow_fuse/perfect_nested/perfect_nested.mlir @@ -200,4 +200,4 @@ module attributes {} { // CTRL2DATA-NEXT: neura.yield // CTRL2DATA-NEXT: } -// MAPPING: func.func @_Z10bert_node1PA1_A1_A1_A1_A128_bPA1_A128_S1_(%arg0: memref, %arg1: memref) attributes {accelerator = "neura", dataflow_mode = "predicate", llvm.linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 8 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} +// MAPPING: func.func @_Z10bert_node1PA1_A1_A1_A1_A128_bPA1_A128_S1_(%arg0: memref, %arg1: memref) attributes {accelerator = "neura", dataflow_mode = "predicate", llvm.linkage = #llvm.linkage, mapping_info = {compiled_ii = 8 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 8 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} diff --git a/test/controflow_fuse/simple_loop/simple_loop.mlir b/test/controflow_fuse/simple_loop/simple_loop.mlir index b5dd9bb0..e9c04f7c 100644 --- a/test/controflow_fuse/simple_loop/simple_loop.mlir +++ b/test/controflow_fuse/simple_loop/simple_loop.mlir @@ -209,4 +209,4 @@ module attributes {} { // FUSE-MAPPING: func.func @_Z11simple_loopPiS_ // FUSE-MAPPING-SAME: accelerator = "neura" // FUSE-MAPPING-SAME: dataflow_mode = "predicate" -// FUSE-MAPPING-SAME: mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 1 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} \ No newline at end of file +// FUSE-MAPPING-SAME: mapping_info = {compiled_ii = 2 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 1 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} \ No newline at end of file diff --git a/test/controflow_fuse/simple_loop_reduction/simple_loop_reduction.mlir b/test/controflow_fuse/simple_loop_reduction/simple_loop_reduction.mlir index 71726d54..ace0dd26 100644 --- a/test/controflow_fuse/simple_loop_reduction/simple_loop_reduction.mlir +++ b/test/controflow_fuse/simple_loop_reduction/simple_loop_reduction.mlir @@ -178,4 +178,4 @@ module attributes {} { // FUSE-NEXT: } -// FUSE-MAPPING: func.func @_Z10simpleloopv() -> i32 attributes {accelerator = "neura", dataflow_mode = "predicate", llvm.linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 3 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} +// FUSE-MAPPING: func.func @_Z10simpleloopv() -> i32 attributes {accelerator = "neura", dataflow_mode = "predicate", llvm.linkage = #llvm.linkage, mapping_info = {compiled_ii = 3 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 3 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} diff --git a/test/e2e/axpy/axpy_kernel.mlir b/test/e2e/axpy/axpy_kernel.mlir index 44854e7d..7474a7cd 100644 --- a/test/e2e/axpy/axpy_kernel.mlir +++ b/test/e2e/axpy/axpy_kernel.mlir @@ -22,7 +22,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // -// MAPPING: func.func @kernel_axpy_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel_axpy_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = neura.reserve {dfg_id = 1 : i32} : !neura.data // MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data diff --git a/test/e2e/bicg/bicg_int_kernel.mlir b/test/e2e/bicg/bicg_int_kernel.mlir index fa91eb4e..a8fcbcae 100644 --- a/test/e2e/bicg/bicg_int_kernel.mlir +++ b/test/e2e/bicg/bicg_int_kernel.mlir @@ -27,7 +27,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @kernel_bicg_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel_bicg_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 10 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.constant"() <{value = "%arg3"}> {dfg_id = 0 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.constant"() <{value = 0 : i8}> {dfg_id = 1 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.constant"() <{value = 32 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 1 : i32}]} : () -> !neura.data diff --git a/test/e2e/bicg/bicg_kernel.mlir b/test/e2e/bicg/bicg_kernel.mlir index f3ec6d5a..5f6f1384 100644 --- a/test/e2e/bicg/bicg_kernel.mlir +++ b/test/e2e/bicg/bicg_kernel.mlir @@ -46,8 +46,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// BEFORE_CANONICALIZE: module attributes {dlti.dl_spec = {{.*}}} { -// BEFORE_CANONICALIZE-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// BEFORE_CANONICALIZE: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // BEFORE_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 // BEFORE_CANONICALIZE-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 // BEFORE_CANONICALIZE-NEXT: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr @@ -105,8 +104,7 @@ // BEFORE_CANONICALIZE-NEXT: } // BEFORE_CANONICALIZE-NEXT: } -// AFTER_CANONICALIZE: module attributes {dlti.dl_spec = {{.*}}} { -// AFTER_CANONICALIZE-NEXT: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// AFTER_CANONICALIZE: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // AFTER_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 // AFTER_CANONICALIZE-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 // AFTER_CANONICALIZE-NEXT: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr @@ -165,7 +163,7 @@ // AFTER_CANONICALIZE-NEXT: } -// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 12 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = "%arg1"}> {dfg_id = 2 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data @@ -1027,8 +1025,7 @@ // DOT-NEXT: compound = true; // DOT-NEXT: subgraph cluster_1 { // DOT-NEXT: v2 [label = " ", shape = plain]; -// DOT-NEXT: label = "builtin.module : ()\n\ndlti.dl_spec: {{.*}}\nllvm.ident: \"clang version 20.1...."; -// DOT-NEXT: subgraph cluster_3 { +// DOT: subgraph cluster_3 { // DOT-NEXT: v4 [label = " ", shape = plain]; // DOT-NEXT: label = ""; // DOT-NEXT: subgraph cluster_5 { diff --git a/test/e2e/fft/fft_kernel.mlir b/test/e2e/fft/fft_kernel.mlir index 8cb59b0d..22930aba 100644 --- a/test/e2e/fft/fft_kernel.mlir +++ b/test/e2e/fft/fft_kernel.mlir @@ -22,7 +22,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @kernel(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 12 : i32, res_mii = 8 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 19 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 12 : i32, res_mii = 8 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 0 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 128 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = 1 : i32}> {dfg_id = 2 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data diff --git a/test/e2e/fir/fir_kernel.mlir b/test/e2e/fir/fir_kernel.mlir index 34050713..ab5942c4 100644 --- a/test/e2e/fir/fir_kernel.mlir +++ b/test/e2e/fir/fir_kernel.mlir @@ -25,7 +25,7 @@ // RUN: FileCheck %s --input-file=%t-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=%t-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data @@ -483,8 +483,7 @@ // DOT-NEXT: compound = true; // DOT-NEXT: subgraph cluster_1 { // DOT-NEXT: v2 [label = " ", shape = plain]; -// DOT-NEXT: label = "builtin.module : ()\n\ndlti.dl_spec: {{.*}}\nllvm.ident: \"clang version 20.1...."; -// DOT-NEXT: subgraph cluster_3 { +// DOT: subgraph cluster_3 { // DOT-NEXT: v4 [label = " ", shape = plain]; // DOT-NEXT: label = ""; // DOT-NEXT: subgraph cluster_5 { diff --git a/test/e2e/fir/fir_kernel_vec.mlir b/test/e2e/fir/fir_kernel_vec.mlir index 9f66308b..0ba33efc 100644 --- a/test/e2e/fir/fir_kernel_vec.mlir +++ b/test/e2e/fir/fir_kernel_vec.mlir @@ -23,7 +23,7 @@ // RUN: FileCheck %s --input-file=%t-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=%t-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = dense<0> : vector<4xi32>}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data, i1> // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data, i1> diff --git a/test/e2e/gemm/gemm_kernel.mlir b/test/e2e/gemm/gemm_kernel.mlir index 8ee07f87..b7fa6ce0 100644 --- a/test/e2e/gemm/gemm_kernel.mlir +++ b/test/e2e/gemm/gemm_kernel.mlir @@ -22,7 +22,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // -// MAPPING: func.func @kernel_int(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: i32 {llvm.noundef}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 13 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel_int(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: i32 {llvm.noundef}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 17 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 13 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = "%arg1"}> {dfg_id = 2 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data diff --git a/test/e2e/gemv/gemv_kernel.mlir b/test/e2e/gemv/gemv_kernel.mlir index d492ce48..d9d88e08 100644 --- a/test/e2e/gemv/gemv_kernel.mlir +++ b/test/e2e/gemv/gemv_kernel.mlir @@ -22,7 +22,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // -// MAPPING: func.func @kernel_gemv_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 3 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel_gemv_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 11 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 3 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data diff --git a/test/e2e/histogram/histogram_kernel.mlir b/test/e2e/histogram/histogram_kernel.mlir index 1c8cd9b6..30cba49c 100644 --- a/test/e2e/histogram/histogram_kernel.mlir +++ b/test/e2e/histogram/histogram_kernel.mlir @@ -25,7 +25,7 @@ -// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = neura.reserve {dfg_id = 1 : i32} : !neura.data // MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data diff --git a/test/e2e/relu/relu_kernel.mlir b/test/e2e/relu/relu_kernel.mlir index e998d1b2..1b7939f5 100644 --- a/test/e2e/relu/relu_kernel.mlir +++ b/test/e2e/relu/relu_kernel.mlir @@ -32,7 +32,7 @@ // // Check the mapped MLIR contains key operations with full statements. // RUN: FileCheck %s --input-file=%t-mapping.mlir -check-prefix=MAPPING -// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data diff --git a/test/e2e/spmv/spmv_kernel.mlir b/test/e2e/spmv/spmv_kernel.mlir index bc0908a2..9a7fbfdd 100644 --- a/test/e2e/spmv/spmv_kernel.mlir +++ b/test/e2e/spmv/spmv_kernel.mlir @@ -22,7 +22,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 9 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 14 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 9 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data diff --git a/test/mapping_quality/branch_for.mlir b/test/mapping_quality/branch_for.mlir index ed4e1df1..15fb70a5 100644 --- a/test/mapping_quality/branch_for.mlir +++ b/test/mapping_quality/branch_for.mlir @@ -195,7 +195,7 @@ func.func @loop_test() -> f32 { // MOV-NEXT: neura.return_value %25 : !neura.data // MOV-NEXT: neura.yield -// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // YAML: array_config: // YAML-NEXT: columns: 4 diff --git a/test/mapping_quality/tiny_loop.mlir b/test/mapping_quality/tiny_loop.mlir index 5859a34a..64f3edd4 100644 --- a/test/mapping_quality/tiny_loop.mlir +++ b/test/mapping_quality/tiny_loop.mlir @@ -81,6 +81,6 @@ module { // CHECK-NEXT: "neura.return"(%15) : (i64) -> () // CHECK-NEXT: } -// SPATIAL: func.func @simple_add_loop() -> i64 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-only", mapping_strategy = "heuristic", rec_mii = 3 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// SPATIAL: func.func @simple_add_loop() -> i64 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-only", mapping_strategy = "heuristic", rec_mii = 3 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { -// SPATIAL-TEMPORAL: func.func @simple_add_loop() -> i64 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 3 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { \ No newline at end of file +// SPATIAL-TEMPORAL: func.func @simple_add_loop() -> i64 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 3 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 3 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { \ No newline at end of file diff --git a/test/multi-cgra/kernel_mapping/fir/fir.mlir b/test/multi-cgra/kernel_mapping/fir/fir.mlir index 98a2b8af..cc8e85d8 100644 --- a/test/multi-cgra/kernel_mapping/fir/fir.mlir +++ b/test/multi-cgra/kernel_mapping/fir/fir.mlir @@ -204,7 +204,7 @@ module attributes {} { // MAPPED-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_0 dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg2 : memref, memref)] : (memref, memref, i32) -> (memref, memref, i32) { // MAPPED-NEXT: ^bb0(%arg3: memref, %arg4: memref, %arg5: i32): // MAPPED-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 32 : index} : index -// MAPPED-NEXT: %1 = neura.kernel inputs(%arg3, %arg4 : memref, memref) iter_args_init(%arg5 : i32) attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 2 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPED-NEXT: %1 = neura.kernel inputs(%arg3, %arg4 : memref, memref) iter_args_init(%arg5 : i32) attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 2 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // MAPPED-NEXT: ^bb0(%arg6: memref, %arg7: memref, %arg8: i32): // MAPPED-NEXT: %2 = "neura.grant_once"() <{constant_value = "%iter_arg_init0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPED-NEXT: %3 = neura.reserve {dfg_id = 1 : i32} : !neura.data diff --git a/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir b/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir index 14766c84..3bc4e2b1 100644 --- a/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir +++ b/test/multi-cgra/kernel_mapping/loop-in-kernel/loop-in-kernel.mlir @@ -152,7 +152,7 @@ module { // MAPPED-NEXT: %c0_i32 = arith.constant 0 : i32 // MAPPED-NEXT: %dependency_read_out:2, %value_outputs = taskflow.task @Task_o dependency_read_in(%arg0, %arg2 : memref, memref) value_inputs(%c0_i32 : i32) : (memref, memref, i32) -> (memref, memref, i32) { // MAPPED-NEXT: ^bb0(%arg3: memref, %arg4: memref, %arg5: i32): -// MAPPED-NEXT: %0 = neura.kernel inputs(%arg3, %arg4, %arg5 : memref, memref, i32) attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPED-NEXT: %0 = neura.kernel inputs(%arg3, %arg4, %arg5 : memref, memref, i32) attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 6 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // MAPPED-NEXT: ^bb0(%arg6: memref, %arg7: memref, %arg8: i32): // MAPPED-NEXT: %1 = "neura.grant_once"() <{constant_value = "%input2"}> {dfg_id = 0 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPED-NEXT: %2 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data diff --git a/test/multi-cgra/kernel_mapping/relu/relu.mlir b/test/multi-cgra/kernel_mapping/relu/relu.mlir index 006240d3..595e53e8 100644 --- a/test/multi-cgra/kernel_mapping/relu/relu.mlir +++ b/test/multi-cgra/kernel_mapping/relu/relu.mlir @@ -237,7 +237,7 @@ module attributes {} { // MAPPED-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { // MAPPED-NEXT: ^bb0(%arg2: memref, %arg3: memref, %arg4: memref, %arg5: i32): // MAPPED-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 32 : index} : index -// MAPPED-NEXT: neura.kernel inputs(%arg2, %arg5, %arg4 : memref, i32, memref) attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 1 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPED-NEXT: neura.kernel inputs(%arg2, %arg5, %arg4 : memref, i32, memref) attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 2 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 1 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // MAPPED-NEXT: ^bb0(%arg6: memref, %arg7: i32, %arg8: memref): // MAPPED-NEXT: %1 = neura.counter {counter_id = 0 : i32, counter_type = "leaf", dfg_id = 0 : i32, lower_bound = 0 : index, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 1 : i32}], step = 1 : index, upper_bound = 32 : index} : !neura.data // MAPPED-NEXT: %2 = "neura.data_mov"(%1) {dfg_id = 2 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data diff --git a/test/neura/ctrl/branch_for.mlir b/test/neura/ctrl/branch_for.mlir index fcc69fd9..5e966ec3 100644 --- a/test/neura/ctrl/branch_for.mlir +++ b/test/neura/ctrl/branch_for.mlir @@ -205,7 +205,7 @@ func.func @loop_test() -> f32 { // MOV-NEXT: neura.yield // MOV-NEXT: } -// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { +// MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { // YAML: array_config: // YAML-NEXT: columns: 4 diff --git a/test/neura/for_loop/relu_test.mlir b/test/neura/for_loop/relu_test.mlir index 33f12174..a34e4fd7 100644 --- a/test/neura/for_loop/relu_test.mlir +++ b/test/neura/for_loop/relu_test.mlir @@ -135,4 +135,4 @@ // CTRL2DATA-NEXT: } -// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = {{.*}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = {{.*}}, ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<{{.*}}>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { \ No newline at end of file +// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { \ No newline at end of file diff --git a/test/neura/fusion/test.mlir b/test/neura/fusion/test.mlir index c0b34fd1..a2cbcb5e 100644 --- a/test/neura/fusion/test.mlir +++ b/test/neura/fusion/test.mlir @@ -33,7 +33,7 @@ // CHECK-FUSED-DAG: %93 = "neura.mul_add"(%90, %91, %92) : (!neura.data, !neura.data, !neura.data) -> !neura.data // CHECK-FUSED-DAG: %106 = "neura.mul_add"(%103, %104, %105) : (!neura.data, !neura.data, !neura.data) -> !neura.data -// CHECK-MAPPING: mapping_info = {compiled_ii = {{[0-9]+}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} +// CHECK-MAPPING: mapping_info = {compiled_ii = 12 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} // RUN: mlir-neura-opt --architecture-spec=%S/../../arch_spec/architecture.yaml --verify-each=true --mlir-print-ir-after-failure \ // RUN: --assign-accelerator \ @@ -111,7 +111,7 @@ // RUN: --insert-data-mov \ // RUN: --map-to-accelerator="mapping-strategy=heuristic backtrack-config=simple" %t-kernel.mlir | FileCheck %s --check-prefix=CHECK-ITER-MERGE-PATTERN-MAPPING -// CHECK-ITER-MERGE-PATTERN-MAPPING: mapping_info = {compiled_ii = {{[0-9]+}} : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 8 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} +// CHECK-ITER-MERGE-PATTERN-MAPPING: mapping_info = {compiled_ii = 12 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 8 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} // RUN: mlir-neura-opt --architecture-spec=%S/../../arch_spec/architecture.yaml --verify-each=true --mlir-print-ir-after-failure \ // RUN: --assign-accelerator \ From 55cd94b8ad011c28fa7eb84562b0af3697927987 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Wed, 25 Mar 2026 10:03:33 +0800 Subject: [PATCH 13/26] Refactor code for improved readability and consistency in MappingState and mapping_util --- include/NeuraDialect/Mapping/MappingState.h | 32 +++++++++++---------- include/NeuraDialect/Mapping/mapping_util.h | 3 +- lib/NeuraDialect/Mapping/MappingState.cpp | 31 +++++++++++++------- 3 files changed, 39 insertions(+), 27 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index c453e991..5fe23d22 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -13,10 +13,10 @@ namespace neura { // Occupy status for multi-cycle pipeline support. // These states define how a tile/FU is occupied at a given time step. -#define SINGLE_OCCUPY 0 // A single-cycle op is in the FU (exclusive) +#define SINGLE_OCCUPY 0 // A single-cycle op is in the FU (exclusive) #define START_PIPE_OCCUPY 1 // A multi-cycle op starts in the FU -#define END_PIPE_OCCUPY 2 // A multi-cycle op ends in the FU -#define IN_PIPE_OCCUPY 3 // A multi-cycle op is occupying the FU (pipelined) +#define END_PIPE_OCCUPY 2 // A multi-cycle op ends in the FU +#define IN_PIPE_OCCUPY 3 // A multi-cycle op is occupying the FU (pipelined) // Represents a spatial-temporal location: (resource, time_step) struct MappingLoc { @@ -84,7 +84,8 @@ class MappingState { // Note that the check is performed in II granularity. // For example, if II is 4, and we want to check (tile 2, step 5), then // it will check (tile 2, step 1), (tile 2, step 5), (tile 2, step 9), etc. - bool isAvailableAcrossTime(const MappingLoc &loc, Operation *op = nullptr) const; + bool isAvailableAcrossTime(const MappingLoc &loc, + Operation *op = nullptr) const; // Checks if a location is available for a specific occupy status. // This implements the pipeline-aware availability checking: @@ -92,8 +93,8 @@ class MappingState { // - START_PIPE_OCCUPY: available if free or IN_PIPE_OCCUPY or END_PIPE_OCCUPY // - END_PIPE_OCCUPY: available if free or IN_PIPE_OCCUPY or START_PIPE_OCCUPY // - IN_PIPE_OCCUPY: always available (can pipeline with any status) - bool isAvailableForOccupyStatus(const MappingLoc &loc, - int new_occupy_status, Operation *op = nullptr) const; + bool isAvailableForOccupyStatus(const MappingLoc &loc, int new_occupy_status, + Operation *op = nullptr) const; // Gets the occupy status at a specific location across time domain. // Returns -1 if the location is not occupied. @@ -103,7 +104,8 @@ class MappingState { // This function leverages the isAvailableAcrossTime function in each // time step. bool isAvailableAcrossTimeInRange(BasicResource *resource, int start_time, - int exclusive_end_time, Operation *op = nullptr) const; + int exclusive_end_time, + Operation *op = nullptr) const; // Checks availability of a register's cluster write port across the relevant // time steps. Returns false if a DIFFERENT register in the same @@ -165,14 +167,14 @@ class MappingState { const std::map> &getOpToLocs() const { return this->op_to_locs; } - const std::unordered_map>> & + const std::unordered_map< + RegisterFile *, std::unordered_map>> & getRegFileWriteToOccupyOperations() const { return this->reg_file_write_to_occupy_operations; } - const std::unordered_map>> & + const std::unordered_map< + RegisterFile *, std::unordered_map>> & getRegFileReadToOccupyOperations() const { return this->reg_file_read_to_occupy_operations; } @@ -191,15 +193,15 @@ class MappingState { this->op_to_locs = op_to_locs; } void setRegFileWriteToOccupyOperations( - const std::unordered_map>> + const std::unordered_map< + RegisterFile *, std::unordered_map>> &records) { this->reg_file_write_to_occupy_operations = records; } void setRegFileReadToOccupyOperations( - const std::unordered_map>> + const std::unordered_map< + RegisterFile *, std::unordered_map>> &records) { this->reg_file_read_to_occupy_operations = records; } diff --git a/include/NeuraDialect/Mapping/mapping_util.h b/include/NeuraDialect/Mapping/mapping_util.h index a62a0979..2465a8e0 100644 --- a/include/NeuraDialect/Mapping/mapping_util.h +++ b/include/NeuraDialect/Mapping/mapping_util.h @@ -114,7 +114,8 @@ bool canReachLocInTime(const std::vector &producers, // The end_time is exclusive, meaning the register should be available // until end_time - 1. Returns nullptr if no available register found. Register *getAvailableRegister(const MappingState &mapping_state, Tile *tile, - int start_time, int exclusive_end_time, Operation *op = nullptr); + int start_time, int exclusive_end_time, + Operation *op = nullptr); // Gets the execution latency of an operation from its "latency" attribute. // Returns 1 (single-cycle) if the attribute is not present. diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index edbfb693..5a812622 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -48,7 +48,8 @@ bool MappingState::addWriteToRegFileRecord(Register *reg, int time_step) { // writer, regardless of whether it targets the same register or a different // one. This disallows both: // * ADD NORTH, SOUTH -> $0, $1 (single op writing two regs in a cluster) - // * ADD -> $0 + MOV -> $1 (two ops writing different regs in a cluster) + // * ADD -> $0 + MOV -> $1 (two ops writing different regs in a + // cluster) // // However, multiple writes to the SAME register are allowed (idempotent): // * Route A writes $0 @t=4, Route B also writes $0 @t=4 @@ -149,7 +150,7 @@ void MappingState::removeReadFromRegFileRecord(Register *reg, int time_step) { } bool MappingState::isRegisterWriteAvailableAcrossTime(Register *reg, - int time_step) const { + int time_step) const { RegisterFile *reg_file = reg->getRegisterFile(); if (!reg_file) { return true; @@ -192,7 +193,7 @@ bool MappingState::isRegisterWriteAvailableAcrossTime(Register *reg, } bool MappingState::isRegisterReadAvailableAcrossTime(Register *reg, - int time_step) const { + int time_step) const { RegisterFile *reg_file = reg->getRegisterFile(); if (!reg_file) { return true; @@ -337,7 +338,8 @@ void MappingState::unbindOp(Operation *op) { op_to_locs.erase(it); } -bool MappingState::isAvailableAcrossTime(const MappingLoc &loc, Operation *op) const { +bool MappingState::isAvailableAcrossTime(const MappingLoc &loc, + Operation *op) const { // Checks whether the resource at the given (resource, time_step) is free, // considering both occupancy state and the register-cluster constraint. @@ -403,9 +405,11 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc, Operation *op) c } bool MappingState::isAvailableForOccupyStatus(const MappingLoc &loc, - int new_occupy_status, Operation *op) const { + int new_occupy_status, + Operation *op) const { // Helper lambda to check a single location against all existing entries - auto checkSingleLoc = [this, new_occupy_status, op](const MappingLoc &check_loc) -> bool { + auto checkSingleLoc = [this, new_occupy_status, + op](const MappingLoc &check_loc) -> bool { std::map>>::const_iterator it = occupied_locs.find(check_loc); @@ -517,7 +521,8 @@ int MappingState::getOccupyStatusAcrossTime(const MappingLoc &loc) const { bool MappingState::isAvailableAcrossTimeInRange(BasicResource *resource, int start_time, - int exclusive_end_time, Operation *op) const { + int exclusive_end_time, + Operation *op) const { // Checks the availability for each time step across time domain. for (int t = start_time; t < exclusive_end_time; ++t) { MappingLoc check_loc = {resource, t}; @@ -985,14 +990,18 @@ MappingStateSnapshot::MappingStateSnapshot(const MappingState &mapping_state) { this->occupied_locs = mapping_state.getOccupiedLocs(); this->loc_to_op = mapping_state.getLocToOp(); this->op_to_locs = mapping_state.getOpToLocs(); - this->reg_file_write_to_occupy_operations = mapping_state.getRegFileWriteToOccupyOperations(); - this->reg_file_read_to_occupy_operations = mapping_state.getRegFileReadToOccupyOperations(); + this->reg_file_write_to_occupy_operations = + mapping_state.getRegFileWriteToOccupyOperations(); + this->reg_file_read_to_occupy_operations = + mapping_state.getRegFileReadToOccupyOperations(); } void MappingStateSnapshot::restore(MappingState &mapping_state) { mapping_state.setOccupiedLocs(this->occupied_locs); mapping_state.setLocToOp(this->loc_to_op); mapping_state.setOpToLocs(this->op_to_locs); - mapping_state.setRegFileWriteToOccupyOperations(this->reg_file_write_to_occupy_operations); - mapping_state.setRegFileReadToOccupyOperations(this->reg_file_read_to_occupy_operations); + mapping_state.setRegFileWriteToOccupyOperations( + this->reg_file_write_to_occupy_operations); + mapping_state.setRegFileReadToOccupyOperations( + this->reg_file_read_to_occupy_operations); } From 7c0d4eff7b6b55bb87f87b5dcb6d5b8a98fe3bbf Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Wed, 25 Mar 2026 10:40:46 +0800 Subject: [PATCH 14/26] Refactor mapping_util.cpp for improved type clarity and consistency --- lib/NeuraDialect/Mapping/mapping_util.cpp | 46 ++++++++++++++--------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/lib/NeuraDialect/Mapping/mapping_util.cpp b/lib/NeuraDialect/Mapping/mapping_util.cpp index 7711562c..dac1feb6 100644 --- a/lib/NeuraDialect/Mapping/mapping_util.cpp +++ b/lib/NeuraDialect/Mapping/mapping_util.cpp @@ -218,7 +218,7 @@ mlir::neura::collectRecurrenceCycles(Region ®ion) { traverseAlongPath(parent_op, reserve_value, current_path, visited_in_path, collected_paths); - for (auto &cycle : collected_paths) { + for (RecurrenceCycle &cycle : collected_paths) { cycle.operations.push_back(ctrl_mov_op); recurrence_cycles.push_back(std::move(cycle)); } @@ -261,9 +261,10 @@ mlir::neura::getTopologicallySortedOps(Region ®ion) { std::deque ready_queue; // Collects recurrence cycle ops. - auto recurrence_cycles = collectRecurrenceCycles(region); + SmallVector recurrence_cycles = + collectRecurrenceCycles(region); llvm::DenseSet recurrence_ops; - for (const auto &cycle : recurrence_cycles) { + for (const RecurrenceCycle &cycle : recurrence_cycles) { for (Operation *op : cycle.operations) { recurrence_ops.insert(op); } @@ -550,7 +551,8 @@ bool mlir::neura::tryRouteBackwardMove(Operation *mov_op, MappingLoc src_loc, Register *mlir::neura::getAvailableRegister(const MappingState &state, Tile *tile, int start_time, - int exclusive_end_time, Operation *op) { + int exclusive_end_time, + Operation *op) { // Finds the first register that is free across the requested range AND // satisfies the single-port cluster constraints: // - Write port: at start_time, only one register per RegisterFile may be @@ -559,9 +561,17 @@ Register *mlir::neura::getAvailableRegister(const MappingState &state, // RegisterFile may be read (same-register reads are shared/allowed). // Read and write ports are independent — one read AND one write can happen // simultaneously on the same RegisterFile. + // + // TODO: The same-source DataMovOp register-sharing mechanism + // implemented in MappingState::isAvailableAcrossTime() and + // isAvailableForOccupyStatus() is a short-term workaround for routing + // congestion caused by high-fanout values (e.g., predicate values with many + // consumers on the same tile). The long-term fix is to deduplicate DataMovOps + // with the same materialized source in InsertDataMovPass, emitting a single + // DataMovOp per (source, destination-tile) pair instead of one per consumer. for (Register *reg : tile->getRegisters()) { - if (!state.isAvailableAcrossTimeInRange(reg, start_time, - exclusive_end_time, op)) { + if (!state.isAvailableAcrossTimeInRange(reg, start_time, exclusive_end_time, + op)) { continue; } // Check cluster write-port constraint at the write time step. @@ -752,7 +762,7 @@ Operation *mlir::neura::getMaterializedProducer(Value operand) { isa(producer) && "Expected a DataMovOp as operand producer for non-ReserveOp operations"); auto mov_op = dyn_cast(producer); - auto materialized_producer = mov_op.getOperand().getDefiningOp(); + Operation *materialized_producer = mov_op.getOperand().getDefiningOp(); return materialized_producer; } @@ -765,7 +775,8 @@ int mlir::neura::getPhysicalHops(const std::vector &producers, for (Operation *producer : producers) { // Get the last location of the producer. - auto producer_locs = mapping_state.getAllLocsOfOp(producer); + const std::vector &producer_locs = + mapping_state.getAllLocsOfOp(producer); assert(!producer_locs.empty() && "No locations found for producer"); MappingLoc producer_loc = producer_locs.back(); @@ -784,7 +795,8 @@ bool mlir::neura::canReachLocInTime(const std::vector &producers, for (Operation *producer : producers) { // Get the last location of the producer. - auto producer_locs = mapping_state.getAllLocsOfOp(producer); + const std::vector &producer_locs = + mapping_state.getAllLocsOfOp(producer); assert(!producer_locs.empty() && "No locations found for producer"); MappingLoc producer_loc = producer_locs.back(); @@ -1039,12 +1051,12 @@ mlir::neura::calculateAward(Operation *op, std::set &critical_ops, int occupied_in = 0; int occupied_out = 0; - for (auto *link : tile->getInLinks()) { + for (Link *link : tile->getInLinks()) { if (!mapping_state.isAvailableAcrossTime({link, t})) { occupied_in++; } } - for (auto *link : tile->getOutLinks()) { + for (Link *link : tile->getOutLinks()) { if (!mapping_state.isAvailableAcrossTime({link, t})) { occupied_out++; } @@ -1141,11 +1153,11 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, target_loc.resource, target_loc.time_step, latency, op); if (bind_success) { llvm::errs() << "[DEBUG] Bound multi-cycle op (latency=" << latency - << ") " << *op << " onto loc: " - << target_loc.resource->getType() << "#" + << ") " << *op + << " onto loc: " << target_loc.resource->getType() << "#" << target_loc.resource->getId() - << " @t=" << target_loc.time_step << " to t=" - << (target_loc.time_step + latency - 1) << "\n"; + << " @t=" << target_loc.time_step + << " to t=" << (target_loc.time_step + latency - 1) << "\n"; } } else { // For single-cycle ops, use default SINGLE_OCCUPY binding @@ -1272,6 +1284,4 @@ int mlir::neura::getOpLatency(Operation *op) { return 1; } -bool mlir::neura::isMultiCycleOp(Operation *op) { - return getOpLatency(op) > 1; -} \ No newline at end of file +bool mlir::neura::isMultiCycleOp(Operation *op) { return getOpLatency(op) > 1; } \ No newline at end of file From d2882039431bd6d867527d0e6cb0f3236ec72274 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Wed, 25 Mar 2026 12:37:17 +0800 Subject: [PATCH 15/26] Refactor MLIR test cases and add script for updating CHECK lines --- = | 66 + lib/NeuraDialect/Mapping/mapping_util.cpp | 91 +- .../c2llvm2mlir/nested_loop/test.mlir | 478 +++--- test/e2e/histogram/histogram_kernel.mlir | 411 ++--- test/e2e/spmv/spmv_kernel.mlir | 1355 +++++++++-------- test/multi-cgra/kernel_mapping/relu/relu.mlir | 19 +- .../taskflow/resnet/simple_resnet_tosa.mlir | 8 +- update_test_checks.py | 120 ++ 8 files changed, 1354 insertions(+), 1194 deletions(-) create mode 100644 = create mode 100644 update_test_checks.py diff --git a/= b/= new file mode 100644 index 00000000..1e4720c2 --- /dev/null +++ b/= @@ -0,0 +1,66 @@ +// This struct represents a pending data_mov/ctrl_mov that is being routed, +// along with its routing path. +struct PendingRoute { + Operation *mov_op; + std::vector path; +}; + +bool hasSafeOperandIterationAtConsume( + Operation *op, const std::vector &operand_routes, int ii) { + assert(ii > 0 && II should be positive); + + if (operand_routes.empty()) { + return true; + } + + for (const PendingRoute &route : operand_routes) { + // Records the time range that each register is occupied on this route. + // >, this means the register is occupied + // from min_time to max_time. + DenseMap> reg_time_range; + for (const MappingLoc &loc : route.path) { + Register *reg = dyn_cast(loc.resource); + continue; + } + + // For each register, tracks its live interval on this path by keeping + // the earliest and latest time it appears. + // Inserts a new entry if the register is seen for the first time. + auto [it, inserted] = reg_time_range.try_emplace( + reg, std::make_pair(loc.time_step, loc.time_step)); + + // If this register has been seen before, updates the time range to + // include the new time step. + // Updates the min_time for this seen register if the new time step is + // earlier. + it->second.first = std::min(it->second.first, loc.time_step); + // Updates the max_time for this seen register if the new time step is + // later. + it->second.second = std::max(it->second.second, loc.time_step); + } + } + + // Register occupancy is tracked in per-cycle slots (half-open in routing + // builders), so max_t - min_t + 1 corresponds to the hold duration. + for (const auto &entry : reg_time_range) { + Register *reg = entry.first; + int min_t = entry.second.first; + int max_t = entry.second.second; + int occupancy = max_t - min_t + 1; + if (occupancy > ii) { + llvm::errs() << [DEBUG] Reject schedule due to register hold next + iteration window. op= + << *op << , II= << ii << , reg=# << reg->getId() + << , hold_start= << min_t << , hold_end= << max_t + << , hold_len= << occupancy + << , mov_op= << *route.mov_op << n; + return false; + } + } + } + + return true; +} + + mapping_state.getII())) { + llvm::errs() << [DEBUG] Operand iteration shift at consume time diff --git a/lib/NeuraDialect/Mapping/mapping_util.cpp b/lib/NeuraDialect/Mapping/mapping_util.cpp index dac1feb6..d3a95200 100644 --- a/lib/NeuraDialect/Mapping/mapping_util.cpp +++ b/lib/NeuraDialect/Mapping/mapping_util.cpp @@ -529,6 +529,72 @@ mlir::neura::getMaterializedUserOps(Operation *op) { return result; } +// This struct represents a pending data_mov/ctrl_mov that is being routed, +// along with its routing path. +struct PendingRoute { + Operation *mov_op; + std::vector path; +}; + +bool hasSafeOperandIterationAtConsume( + Operation *op, const std::vector &operand_routes, int ii) { + assert(ii > 0 && "II should be positive"); + + if (operand_routes.empty()) { + return true; + } + + for (const PendingRoute &route : operand_routes) { + // Records the time range that each register is occupied on this route. + // >, this means the register is occupied + // from min_time to max_time. + DenseMap> reg_time_range; + for (const MappingLoc &loc : route.path) { + Register *reg = dyn_cast(loc.resource); + if (!reg) { + continue; + } + + // For each register, tracks its live interval on this path by keeping + // the earliest and latest time it appears. + // Inserts a new entry if the register is seen for the first time. + auto [it, inserted] = reg_time_range.try_emplace( + reg, std::make_pair(loc.time_step, loc.time_step)); + + // If this register has been seen before, updates the time range to + // include the new time step. + if (!inserted) { + // Updates the min_time for this seen register if the new time step is + // earlier. + it->second.first = std::min(it->second.first, loc.time_step); + // Updates the max_time for this seen register if the new time step is + // later. + it->second.second = std::max(it->second.second, loc.time_step); + } + } + + // Register occupancy is tracked in per-cycle slots (half-open in routing + // builders), so max_t - min_t + 1 corresponds to the hold duration. + for (const auto &entry : reg_time_range) { + Register *reg = entry.first; + int min_t = entry.second.first; + int max_t = entry.second.second; + int occupancy = max_t - min_t + 1; + if (occupancy > ii) { + llvm::errs() << "[DEBUG] Reject schedule due to register hold >= next " + "iteration window. op=" + << *op << ", II=" << ii << ", reg=#" << reg->getId() + << ", hold_start=" << min_t << ", hold_end=" << max_t + << ", hold_len=" << occupancy + << ", mov_op=" << *route.mov_op << "\n"; + return false; + } + } + } + + return true; +} + bool mlir::neura::tryRouteForwardMove(Operation *mov_op, MappingLoc src_loc, MappingLoc dst_loc, const MappingState &state, @@ -562,13 +628,11 @@ Register *mlir::neura::getAvailableRegister(const MappingState &state, // Read and write ports are independent — one read AND one write can happen // simultaneously on the same RegisterFile. // - // TODO: The same-source DataMovOp register-sharing mechanism - // implemented in MappingState::isAvailableAcrossTime() and - // isAvailableForOccupyStatus() is a short-term workaround for routing - // congestion caused by high-fanout values (e.g., predicate values with many - // consumers on the same tile). The long-term fix is to deduplicate DataMovOps - // with the same materialized source in InsertDataMovPass, emitting a single - // DataMovOp per (source, destination-tile) pair instead of one per consumer. + // NOTE: Multiple DataMovOps carrying the same materialized source value are + // allowed to share the same physical register (see + // MappingState::isAvailableAcrossTime() and isAvailableForOccupyStatus()). + // This is correct because all such DataMovOps read the identical value from + // the register, so the single register read port broadcasts to all consumers. for (Register *reg : tile->getRegisters()) { if (!state.isAvailableAcrossTimeInRange(reg, start_time, exclusive_end_time, op)) { @@ -1173,6 +1237,7 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, if (bind_success) { std::vector routed_operands; std::vector routed_ctrl_movs; + std::vector pending_operand_routes; // Tries to route the data move operations. for (Value operand : op->getOperands()) { llvm::errs() << "Processing operand: " << operand << "\n"; @@ -1200,6 +1265,7 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, route_path)) { // Reserves the route for the data move operation. mapping_state.reserveRoute(data_move, route_path); + pending_operand_routes.push_back({data_move, route_path}); routed_operands.push_back(data_move); llvm::errs() << "[DEBUG] Successfully routed data move: " << *data_move << " from " << src_loc.resource->getType() << "#" @@ -1223,6 +1289,17 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, } return false; } + + if (!hasSafeOperandIterationAtConsume(op, pending_operand_routes, + mapping_state.getII())) { + llvm::errs() << "[DEBUG] Operand iteration shift at consume time; " + "unschedule op\n"; + mapping_state.unbindOp(op); + for (Operation *routed_op : routed_operands) { + mapping_state.releaseRoute(routed_op); + } + return false; + } // Checks whether the operation's user is a ctrl_mov. for (Operation *user : getCtrlMovUsers(op)) { auto ctrl_mov = dyn_cast(user); diff --git a/test/Conversion/c2llvm2mlir/nested_loop/test.mlir b/test/Conversion/c2llvm2mlir/nested_loop/test.mlir index 9d40e0cf..0e1b64b7 100644 --- a/test/Conversion/c2llvm2mlir/nested_loop/test.mlir +++ b/test/Conversion/c2llvm2mlir/nested_loop/test.mlir @@ -32,7 +32,7 @@ // CHECK-LLVM2NEURA: %188 = neura.sext %187 : !neura.data -> !neura.data // CHECK-LLVM2NEURA: %207 = "neura.mul"(%205, %206) : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP: llvm.mlir.global external @input(dense<1> : tensor<32xi32>) {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<32 x i32> +// CHECK-LLVM2NEURA-MAP: llvm.mlir.global external @input(dense<1> : tensor<32xi32>) {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<32 x i32> // CHECK-LLVM2NEURA-MAP-NEXT: llvm.mlir.global external @output(dense<0> : tensor<32xi32>) {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<32 x i32> // CHECK-LLVM2NEURA-MAP-NEXT: llvm.mlir.global external @coefficients(dense<[25, 150, 375, -225, 50, 75, -300, 125, 25, 150, 375, -225, 50, 75, -300, 125, 25, 150, 375, -225, 50, 75, -300, 125, 25, 150, 375, -225, 50, 75, -300, 125]> : tensor<32xi32>) {addr_space = 0 : i32, alignment = 16 : i64, dso_local} : !llvm.array<32 x i32> // CHECK-LLVM2NEURA-MAP-NEXT: llvm.mlir.global private unnamed_addr constant @".str"("output: %d\0A\00") {addr_space = 0 : i32, alignment = 1 : i64, dso_local} @@ -50,264 +50,264 @@ // CHECK-LLVM2NEURA-MAP-NEXT: %9 = llvm.call @printf(%5, %8) vararg(!llvm.func) : (!llvm.ptr, i32) -> i32 // CHECK-LLVM2NEURA-MAP-NEXT: llvm.return %1 : i32 // CHECK-LLVM2NEURA-MAP-NEXT: } -// CHECK-LLVM2NEURA-MAP-NEXT: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.noundef}, %arg1: !llvm.ptr {llvm.noundef}, %arg2: !llvm.ptr {llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", frame_pointer = #llvm.framePointerKind, linkage = #llvm.linkage, mapping_info = {compiled_ii = 11 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, no_inline, no_unwind, optimize_none, passthrough = ["mustprogress", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 0 : i64, visibility_ = 0 : i64} { -// CHECK-LLVM2NEURA-MAP-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> {dfg_id = 1 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 1 : i32}]} : () -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %2 = "neura.constant"() <{value = "%arg2"}> {dfg_id = 2 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %3 = "neura.grant_once"() <{constant_value = 1 : i32}> {dfg_id = 3 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 3 : i32, y = 3 : i32}]} : () -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %4 = "neura.constant"() <{value = 1 : i32}> {dfg_id = 4 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %5 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 5 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 3 : i32}]} : () -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %6 = "neura.constant"() <{value = 0 : i32}> {dfg_id = 6 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : () -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %7 = "neura.grant_once"() <{constant_value = 32 : i32}> {dfg_id = 7 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %8 = "neura.data_mov"(%4) {dfg_id = 29 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.noundef}, %arg1: !llvm.ptr {llvm.noundef}, %arg2: !llvm.ptr {llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", frame_pointer = #llvm.framePointerKind, linkage = #llvm.linkage, mapping_info = {compiled_ii = 15 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, no_inline, no_unwind, optimize_none, passthrough = ["mustprogress", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 0 : i64, visibility_ = 0 : i64} { +// CHECK-LLVM2NEURA-MAP-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> {dfg_id = 1 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %2 = "neura.constant"() <{value = "%arg2"}> {dfg_id = 2 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %3 = "neura.grant_once"() <{constant_value = 1 : i32}> {dfg_id = 3 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %4 = "neura.constant"() <{value = 1 : i32}> {dfg_id = 4 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %5 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 5 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 3 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %6 = "neura.constant"() <{value = 0 : i32}> {dfg_id = 6 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 3 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %7 = "neura.grant_once"() <{constant_value = 32 : i32}> {dfg_id = 7 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 3 : i32, y = 1 : i32}]} : () -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %8 = "neura.data_mov"(%4) {dfg_id = 29 : i32, mapping_locs = [{id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 0 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 1 : i32}, {id = 1008 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 1008 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 1008 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %9 = neura.alloca %8 : !neura.data {dfg_id = 38 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 0 : i32}]} -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 47 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %11 = "neura.grant_once"(%10) {dfg_id = 59 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %12 = "neura.data_mov"(%4) {dfg_id = 30 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 47 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %11 = "neura.grant_once"(%10) {dfg_id = 59 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %12 = "neura.data_mov"(%4) {dfg_id = 30 : i32, mapping_locs = [{id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 0 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 1 : i32}, {id = 1008 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 1008 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 1008 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %13 = neura.alloca %12 : !neura.data {dfg_id = 39 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 49 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %15 = "neura.grant_once"(%14) {dfg_id = 61 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 31 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 0 : i32}, {id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 1 : i32}, {id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %17 = neura.alloca %16 : !neura.data {dfg_id = 40 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}]} -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %18 = "neura.data_mov"(%17) {dfg_id = 51 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %19 = "neura.grant_once"(%18) {dfg_id = 63 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %20 = "neura.data_mov"(%4) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %21 = neura.alloca %20 : !neura.data {dfg_id = 41 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}]} -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %22 = "neura.data_mov"(%21) {dfg_id = 53 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %23 = "neura.grant_once"(%22) {dfg_id = 65 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %24 = "neura.data_mov"(%4) {dfg_id = 33 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %25 = neura.alloca %24 : !neura.data {dfg_id = 42 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}]} -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 54 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %27 = "neura.grant_once"(%26) {dfg_id = 66 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %28 = "neura.data_mov"(%0) {dfg_id = 25 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %29 = "neura.data_mov"(%9) {dfg_id = 46 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 2008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 2008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 2008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 2008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 2008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%28, %29) {dfg_id = 58 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// CHECK-LLVM2NEURA-MAP-NEXT: %30 = "neura.data_mov"(%1) {dfg_id = 26 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %31 = "neura.data_mov"(%13) {dfg_id = 48 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 3000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 3000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 3000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 3000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%30, %31) {dfg_id = 60 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// CHECK-LLVM2NEURA-MAP-NEXT: %32 = "neura.data_mov"(%2) {dfg_id = 27 : i32, mapping_locs = [{id = 3001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 3001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %33 = "neura.data_mov"(%17) {dfg_id = 50 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 3008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 3008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 3008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 3008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 3008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 3008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 3008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 3008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%32, %33) {dfg_id = 62 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// CHECK-LLVM2NEURA-MAP-NEXT: %34 = "neura.data_mov"(%6) {dfg_id = 35 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %35 = "neura.data_mov"(%21) {dfg_id = 52 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 26 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 12009 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 4 : i32}, {id = 12009 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 12009 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}, {id = 12009 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 12009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 12009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 12009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 12009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 12009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 12009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 12009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 12009 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 12009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%34, %35) {dfg_id = 64 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 31 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %17 = neura.alloca %16 : !neura.data {dfg_id = 40 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 0 : i32}]} -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %18 = "neura.data_mov"(%17) {dfg_id = 51 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %19 = "neura.grant_once"(%18) {dfg_id = 63 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %20 = "neura.data_mov"(%4) {dfg_id = 32 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %21 = neura.alloca %20 : !neura.data {dfg_id = 41 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 0 : i32}]} -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %22 = "neura.data_mov"(%21) {dfg_id = 53 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %23 = "neura.grant_once"(%22) {dfg_id = 65 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %24 = "neura.data_mov"(%4) {dfg_id = 33 : i32, mapping_locs = [{id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 0 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 1 : i32}, {id = 1008 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %25 = neura.alloca %24 : !neura.data {dfg_id = 42 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 0 : i32}]} -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 54 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %27 = "neura.grant_once"(%26) {dfg_id = 66 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %28 = "neura.data_mov"(%0) {dfg_id = 25 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %29 = "neura.data_mov"(%9) {dfg_id = 46 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 27 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 26 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 12009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 12009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 12009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 12009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 12009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 12009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 12009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%28, %29) {dfg_id = 58 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: %30 = "neura.data_mov"(%1) {dfg_id = 26 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %31 = "neura.data_mov"(%13) {dfg_id = 48 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 3008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 3008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 3008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 3008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 3008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 3008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 3008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 3008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%30, %31) {dfg_id = 60 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: %32 = "neura.data_mov"(%2) {dfg_id = 27 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %33 = "neura.data_mov"(%17) {dfg_id = 50 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 2001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 2001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 2001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 2001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 2001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 2001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 2001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%32, %33) {dfg_id = 62 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: %34 = "neura.data_mov"(%6) {dfg_id = 35 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 12000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %35 = "neura.data_mov"(%21) {dfg_id = 52 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 26 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 12016 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 12016 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 12016 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 12016 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 12016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 12016 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 12016 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 12016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 12016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 12016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 12016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 12016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 12016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%34, %35) {dfg_id = 64 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () // CHECK-LLVM2NEURA-MAP-NEXT: %36 = neura.reserve {dfg_id = 8 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %37 = "neura.data_mov"(%3) {dfg_id = 28 : i32, mapping_locs = [{id = 47 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %38 = neura.phi_start %37, %36 {dfg_id = 37 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 3 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %37 = "neura.data_mov"(%3) {dfg_id = 28 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %38 = neura.phi_start %37, %36 {dfg_id = 37 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %39 = neura.reserve {dfg_id = 9 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %40 = "neura.data_mov"(%15) {dfg_id = 68 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %41 = neura.phi_start %40, %39 {dfg_id = 73 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %40 = "neura.data_mov"(%15) {dfg_id = 68 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %41 = neura.phi_start %40, %39 {dfg_id = 73 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %42 = neura.reserve {dfg_id = 10 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %43 = "neura.data_mov"(%19) {dfg_id = 69 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %44 = neura.phi_start %43, %42 {dfg_id = 74 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %43 = "neura.data_mov"(%19) {dfg_id = 69 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %44 = neura.phi_start %43, %42 {dfg_id = 74 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %45 = neura.reserve {dfg_id = 11 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %46 = "neura.data_mov"(%11) {dfg_id = 67 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %47 = neura.phi_start %46, %45 {dfg_id = 72 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %46 = "neura.data_mov"(%11) {dfg_id = 67 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %47 = neura.phi_start %46, %45 {dfg_id = 72 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %48 = neura.reserve {dfg_id = 12 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %49 = "neura.data_mov"(%27) {dfg_id = 71 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %50 = neura.phi_start %49, %48 {dfg_id = 76 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %49 = "neura.data_mov"(%27) {dfg_id = 71 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %50 = neura.phi_start %49, %48 {dfg_id = 76 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %51 = neura.reserve {dfg_id = 13 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %52 = "neura.data_mov"(%5) {dfg_id = 34 : i32, mapping_locs = [{id = 46 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %53 = neura.phi_start %52, %51 {dfg_id = 43 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %52 = "neura.data_mov"(%5) {dfg_id = 34 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %53 = neura.phi_start %52, %51 {dfg_id = 43 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %54 = neura.reserve {dfg_id = 14 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %55 = "neura.data_mov"(%7) {dfg_id = 36 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %56 = neura.phi_start %55, %54 {dfg_id = 44 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %55 = "neura.data_mov"(%7) {dfg_id = 36 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %56 = neura.phi_start %55, %54 {dfg_id = 44 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %57 = neura.reserve {dfg_id = 15 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %58 = "neura.data_mov"(%23) {dfg_id = 70 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %59 = neura.phi_start %58, %57 {dfg_id = 75 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %60 = "neura.data_mov"(%59) {dfg_id = 81 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %58 = "neura.data_mov"(%23) {dfg_id = 70 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %59 = neura.phi_start %58, %57 {dfg_id = 75 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %60 = "neura.data_mov"(%59) {dfg_id = 81 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %61 = "neura.load"(%60) {dfg_id = 83 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %62 = "neura.data_mov"(%61) {dfg_id = 84 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %63 = "neura.data_mov"(%56) {dfg_id = 57 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %64 = "neura.icmp"(%62, %63) <{cmpType = "slt"}> {dfg_id = 85 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %65 = "neura.data_mov"(%64) {dfg_id = 94 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %66 = "neura.not"(%65) {dfg_id = 103 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 55 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %68 = "neura.data_mov"(%64) {dfg_id = 93 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 20 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 34 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 456 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 456 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 456 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 456 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 456 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 456 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %69 = neura.grant_predicate %67, %68 {dfg_id = 102 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %70 = "neura.data_mov"(%50) {dfg_id = 82 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %71 = "neura.data_mov"(%64) {dfg_id = 92 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %72 = neura.grant_predicate %70, %71 {dfg_id = 101 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %73 = "neura.data_mov"(%56) {dfg_id = 56 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %74 = "neura.data_mov"(%64) {dfg_id = 91 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %75 = neura.grant_predicate %73, %74 {dfg_id = 100 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %76 = "neura.data_mov"(%47) {dfg_id = 77 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %77 = "neura.data_mov"(%64) {dfg_id = 90 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %78 = neura.grant_predicate %76, %77 {dfg_id = 99 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %79 = "neura.data_mov"(%59) {dfg_id = 80 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %80 = "neura.data_mov"(%64) {dfg_id = 89 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %81 = neura.grant_predicate %79, %80 {dfg_id = 98 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %82 = "neura.data_mov"(%44) {dfg_id = 79 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %83 = "neura.data_mov"(%64) {dfg_id = 88 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %84 = neura.grant_predicate %82, %83 {dfg_id = 97 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %85 = "neura.data_mov"(%41) {dfg_id = 78 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %86 = "neura.data_mov"(%64) {dfg_id = 87 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %87 = neura.grant_predicate %85, %86 {dfg_id = 96 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %88 = "neura.data_mov"(%38) {dfg_id = 45 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %89 = "neura.data_mov"(%64) {dfg_id = 86 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 20 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 321 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 321 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 321 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 321 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 321 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %90 = neura.grant_predicate %88, %89 {dfg_id = 95 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %91 = "neura.data_mov"(%66) {dfg_id = 114 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %92 = "neura.data_mov"(%66) {dfg_id = 115 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %93 = neura.grant_predicate %91, %92 {dfg_id = 125 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %94 = "neura.data_mov"(%93) {dfg_id = 144 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.return_void %94 : !neura.data {dfg_id = 146 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} -// CHECK-LLVM2NEURA-MAP-NEXT: %95 = "neura.data_mov"(%69) {dfg_id = 113 : i32, mapping_locs = [{id = 43 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 40 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 39 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 25 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %96 = "neura.data_mov"(%72) {dfg_id = 111 : i32, mapping_locs = [{id = 4011 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 6 : i32}, {id = 4011 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 7 : i32}, {id = 4011 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 8 : i32}, {id = 4011 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 9 : i32}, {id = 4011 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 10 : i32}, {id = 4011 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 11 : i32}, {id = 4011 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 12 : i32}, {id = 4011 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 13 : i32}, {id = 4011 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 14 : i32}, {id = 4011 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 15 : i32}, {id = 4011 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 16 : i32}, {id = 4011 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 17 : i32}, {id = 4011 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%95, %96) {dfg_id = 124 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: %62 = "neura.data_mov"(%61) {dfg_id = 84 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %63 = "neura.data_mov"(%56) {dfg_id = 57 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %64 = "neura.icmp"(%62, %63) <{cmpType = "slt"}> {dfg_id = 85 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %65 = "neura.data_mov"(%64) {dfg_id = 94 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 234 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 7 : i32}, {id = 234 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 8 : i32}, {id = 234 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 9 : i32}, {id = 234 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 10 : i32}, {id = 234 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 11 : i32}, {id = 234 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 234 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 234 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %66 = "neura.not"(%65) {dfg_id = 103 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 55 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %68 = "neura.data_mov"(%64) {dfg_id = 93 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 8000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 8000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 8000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 8000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %69 = neura.grant_predicate %67, %68 {dfg_id = 102 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %70 = "neura.data_mov"(%50) {dfg_id = 82 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 160 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %71 = "neura.data_mov"(%64) {dfg_id = 92 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %72 = neura.grant_predicate %70, %71 {dfg_id = 101 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %73 = "neura.data_mov"(%56) {dfg_id = 56 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 224 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 224 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %74 = "neura.data_mov"(%64) {dfg_id = 91 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %75 = neura.grant_predicate %73, %74 {dfg_id = 100 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %76 = "neura.data_mov"(%47) {dfg_id = 77 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %77 = "neura.data_mov"(%64) {dfg_id = 90 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %78 = neura.grant_predicate %76, %77 {dfg_id = 99 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %79 = "neura.data_mov"(%59) {dfg_id = 80 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 193 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %80 = "neura.data_mov"(%64) {dfg_id = 89 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %81 = neura.grant_predicate %79, %80 {dfg_id = 98 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %82 = "neura.data_mov"(%44) {dfg_id = 79 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %83 = "neura.data_mov"(%64) {dfg_id = 88 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 194 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 194 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 194 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %84 = neura.grant_predicate %82, %83 {dfg_id = 97 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %85 = "neura.data_mov"(%41) {dfg_id = 78 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %86 = "neura.data_mov"(%64) {dfg_id = 87 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 2000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 2000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %87 = neura.grant_predicate %85, %86 {dfg_id = 96 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %88 = "neura.data_mov"(%38) {dfg_id = 45 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 169 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %89 = "neura.data_mov"(%64) {dfg_id = 86 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 176 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 176 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 176 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 176 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %90 = neura.grant_predicate %88, %89 {dfg_id = 95 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %91 = "neura.data_mov"(%66) {dfg_id = 114 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %92 = "neura.data_mov"(%66) {dfg_id = 115 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %93 = neura.grant_predicate %91, %92 {dfg_id = 125 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %94 = "neura.data_mov"(%93) {dfg_id = 144 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.return_void %94 : !neura.data {dfg_id = 146 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} +// CHECK-LLVM2NEURA-MAP-NEXT: %95 = "neura.data_mov"(%69) {dfg_id = 113 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %96 = "neura.data_mov"(%72) {dfg_id = 111 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 4009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 4009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 4009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 4009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 4009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 4009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 4009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%95, %96) {dfg_id = 124 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> () // CHECK-LLVM2NEURA-MAP-NEXT: %97 = neura.reserve {dfg_id = 16 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %98 = "neura.data_mov"(%69) {dfg_id = 112 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %99 = neura.phi_start %98, %97 {dfg_id = 123 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %98 = "neura.data_mov"(%69) {dfg_id = 112 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %99 = neura.phi_start %98, %97 {dfg_id = 123 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %100 = neura.reserve {dfg_id = 17 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %101 = "neura.data_mov"(%90) {dfg_id = 104 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %102 = neura.phi_start %101, %100 {dfg_id = 116 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %101 = "neura.data_mov"(%90) {dfg_id = 104 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %102 = neura.phi_start %101, %100 {dfg_id = 116 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %103 = neura.reserve {dfg_id = 18 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %104 = "neura.data_mov"(%87) {dfg_id = 105 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %105 = neura.phi_start %104, %103 {dfg_id = 117 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %104 = "neura.data_mov"(%87) {dfg_id = 105 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %105 = neura.phi_start %104, %103 {dfg_id = 117 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %106 = neura.reserve {dfg_id = 19 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %107 = "neura.data_mov"(%84) {dfg_id = 106 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %108 = neura.phi_start %107, %106 {dfg_id = 118 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %107 = "neura.data_mov"(%84) {dfg_id = 106 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %108 = neura.phi_start %107, %106 {dfg_id = 118 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %109 = neura.reserve {dfg_id = 20 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %110 = "neura.data_mov"(%81) {dfg_id = 107 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 1008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %111 = neura.phi_start %110, %109 {dfg_id = 119 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %110 = "neura.data_mov"(%81) {dfg_id = 107 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %111 = neura.phi_start %110, %109 {dfg_id = 119 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %112 = neura.reserve {dfg_id = 21 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %113 = "neura.data_mov"(%78) {dfg_id = 108 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %114 = neura.phi_start %113, %112 {dfg_id = 120 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %113 = "neura.data_mov"(%78) {dfg_id = 108 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %114 = neura.phi_start %113, %112 {dfg_id = 120 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %115 = neura.reserve {dfg_id = 22 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %116 = "neura.data_mov"(%75) {dfg_id = 109 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %117 = neura.phi_start %116, %115 {dfg_id = 121 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %116 = "neura.data_mov"(%75) {dfg_id = 109 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %117 = neura.phi_start %116, %115 {dfg_id = 121 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: %118 = neura.reserve {dfg_id = 23 : i32} : !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %119 = "neura.data_mov"(%72) {dfg_id = 110 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %120 = neura.phi_start %119, %118 {dfg_id = 122 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %121 = "neura.data_mov"(%120) {dfg_id = 141 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %122 = "neura.load"(%121) {dfg_id = 145 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %123 = "neura.data_mov"(%122) {dfg_id = 147 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %124 = "neura.data_mov"(%117) {dfg_id = 138 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %125 = "neura.icmp"(%123, %124) <{cmpType = "slt"}> {dfg_id = 148 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %126 = "neura.data_mov"(%114) {dfg_id = 135 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %127 = "neura.data_mov"(%125) {dfg_id = 157 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 33 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %128 = neura.grant_predicate %126, %127 {dfg_id = 166 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %129 = "neura.data_mov"(%111) {dfg_id = 133 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %130 = "neura.data_mov"(%125) {dfg_id = 156 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %131 = neura.grant_predicate %129, %130 {dfg_id = 165 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %132 = "neura.data_mov"(%108) {dfg_id = 131 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %133 = "neura.data_mov"(%125) {dfg_id = 155 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 8000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %134 = neura.grant_predicate %132, %133 {dfg_id = 164 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %135 = "neura.data_mov"(%105) {dfg_id = 129 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %136 = "neura.data_mov"(%125) {dfg_id = 154 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 328 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %137 = neura.grant_predicate %135, %136 {dfg_id = 163 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %138 = "neura.data_mov"(%120) {dfg_id = 140 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 8000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %139 = "neura.data_mov"(%125) {dfg_id = 153 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %140 = neura.grant_predicate %138, %139 {dfg_id = 162 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %141 = "neura.data_mov"(%102) {dfg_id = 127 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %142 = "neura.data_mov"(%125) {dfg_id = 152 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 33 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 200 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %143 = neura.grant_predicate %141, %142 {dfg_id = 161 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %144 = "neura.data_mov"(%117) {dfg_id = 137 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %145 = "neura.data_mov"(%125) {dfg_id = 151 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %146 = neura.grant_predicate %144, %145 {dfg_id = 160 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %147 = "neura.data_mov"(%99) {dfg_id = 143 : i32, mapping_locs = [{id = 448 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %148 = "neura.data_mov"(%125) {dfg_id = 150 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 34 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 457 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 457 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 457 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 457 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 457 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 457 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %149 = neura.grant_predicate %147, %148 {dfg_id = 159 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %150 = "neura.data_mov"(%125) {dfg_id = 149 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %151 = "neura.not"(%150) {dfg_id = 158 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %152 = "neura.data_mov"(%111) {dfg_id = 132 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %153 = "neura.data_mov"(%151) {dfg_id = 174 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %154 = neura.grant_predicate %152, %153 {dfg_id = 199 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %155 = "neura.data_mov"(%102) {dfg_id = 126 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 20 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %156 = "neura.data_mov"(%151) {dfg_id = 173 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %157 = neura.grant_predicate %155, %156 {dfg_id = 198 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %158 = "neura.data_mov"(%117) {dfg_id = 136 : i32, mapping_locs = [{id = 304 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 304 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 304 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 304 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %159 = "neura.data_mov"(%151) {dfg_id = 172 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 289 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %160 = neura.grant_predicate %158, %159 {dfg_id = 197 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %161 = "neura.data_mov"(%99) {dfg_id = 142 : i32, mapping_locs = [{id = 43 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %162 = "neura.data_mov"(%151) {dfg_id = 171 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 416 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 416 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 416 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 416 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %163 = neura.grant_predicate %161, %162 {dfg_id = 196 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %164 = "neura.data_mov"(%120) {dfg_id = 139 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 8008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %165 = "neura.data_mov"(%151) {dfg_id = 170 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %166 = neura.grant_predicate %164, %165 {dfg_id = 195 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %167 = "neura.data_mov"(%114) {dfg_id = 134 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 208 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 208 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 208 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 208 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 208 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %168 = "neura.data_mov"(%151) {dfg_id = 169 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 33 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 201 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 201 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 201 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 201 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 201 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %169 = neura.grant_predicate %167, %168 {dfg_id = 194 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %170 = "neura.data_mov"(%108) {dfg_id = 130 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %171 = "neura.data_mov"(%151) {dfg_id = 168 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 184 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 11 : i32}, {id = 184 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 12 : i32}, {id = 184 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 13 : i32}, {id = 184 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 14 : i32}, {id = 184 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 15 : i32}, {id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %172 = neura.grant_predicate %170, %171 {dfg_id = 193 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %173 = "neura.data_mov"(%105) {dfg_id = 128 : i32, mapping_locs = [{id = 336 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 336 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 336 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 336 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 336 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %174 = "neura.data_mov"(%151) {dfg_id = 167 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %175 = neura.grant_predicate %173, %174 {dfg_id = 192 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %176 = "neura.data_mov"(%154) {dfg_id = 217 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 15 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 1001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %177 = "neura.load"(%176) {dfg_id = 225 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %178 = "neura.data_mov"(%177) {dfg_id = 230 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %179 = "neura.data_mov"(%157) {dfg_id = 214 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %180 = "neura.add"(%178, %179) {dfg_id = 235 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 240 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %182 = "neura.data_mov"(%154) {dfg_id = 216 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 202 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 19 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 2001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 2001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 2001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 2001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%181, %182) {dfg_id = 245 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %154 -> %57 {dfg_id = 215 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %160 -> %54 {dfg_id = 212 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %163 -> %51 {dfg_id = 211 : i32, mapping_locs = [{id = 41 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 448 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 448 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 448 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 448 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 448 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 448 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}, {id = 448 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %166 -> %48 {dfg_id = 210 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 11 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %169 -> %45 {dfg_id = 209 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 169 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %172 -> %42 {dfg_id = 208 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %175 -> %39 {dfg_id = 207 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 29 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 169 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %157 -> %36 {dfg_id = 213 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 352 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 352 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 352 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 352 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 352 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 352 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %183 = "neura.data_mov"(%128) {dfg_id = 191 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %184 = "neura.load"(%183) {dfg_id = 206 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %185 = "neura.data_mov"(%131) {dfg_id = 189 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %186 = "neura.load"(%185) {dfg_id = 205 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %187 = "neura.data_mov"(%186) {dfg_id = 223 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %188 = neura.sext %187 {dfg_id = 229 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %189 = "neura.data_mov"(%184) {dfg_id = 224 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %190 = "neura.data_mov"(%188) {dfg_id = 234 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %191 = "neura.gep"(%189, %190) <{operandSegmentSizes = array}> {dfg_id = 239 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %192 = "neura.data_mov"(%191) {dfg_id = 244 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %193 = "neura.load"(%192) {dfg_id = 248 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %194 = "neura.data_mov"(%134) {dfg_id = 186 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %195 = "neura.load"(%194) {dfg_id = 203 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %196 = "neura.data_mov"(%131) {dfg_id = 188 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %197 = "neura.load"(%196) {dfg_id = 204 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %198 = "neura.data_mov"(%197) {dfg_id = 222 : i32, mapping_locs = [{id = 1001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %199 = neura.sext %198 {dfg_id = 228 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %200 = "neura.data_mov"(%195) {dfg_id = 221 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}, {id = 42 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %201 = "neura.data_mov"(%199) {dfg_id = 233 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %202 = "neura.gep"(%200, %201) <{operandSegmentSizes = array}> {dfg_id = 238 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %203 = "neura.data_mov"(%202) {dfg_id = 243 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %204 = "neura.load"(%203) {dfg_id = 247 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %205 = "neura.data_mov"(%193) {dfg_id = 251 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 20 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %206 = "neura.data_mov"(%204) {dfg_id = 250 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 28 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %207 = "neura.mul"(%205, %206) {dfg_id = 252 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %208 = "neura.data_mov"(%137) {dfg_id = 184 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %209 = "neura.load"(%208) {dfg_id = 202 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %210 = "neura.data_mov"(%140) {dfg_id = 182 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 12000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %211 = "neura.load"(%210) {dfg_id = 201 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %212 = "neura.data_mov"(%211) {dfg_id = 219 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 12000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %213 = neura.sext %212 {dfg_id = 227 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %214 = "neura.data_mov"(%209) {dfg_id = 220 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %215 = "neura.data_mov"(%213) {dfg_id = 232 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 42 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %216 = "neura.gep"(%214, %215) <{operandSegmentSizes = array}> {dfg_id = 237 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %217 = "neura.data_mov"(%216) {dfg_id = 242 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 26 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %218 = "neura.load"(%217) {dfg_id = 246 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %219 = "neura.data_mov"(%218) {dfg_id = 249 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 41 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %220 = "neura.data_mov"(%207) {dfg_id = 253 : i32, mapping_locs = [{id = 34 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %221 = "neura.add"(%219, %220) {dfg_id = 254 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %222 = "neura.data_mov"(%221) {dfg_id = 255 : i32, mapping_locs = [{id = 45 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 32 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 22 : i32}, {id = 36 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 23 : i32}, {id = 22 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %223 = "neura.data_mov"(%216) {dfg_id = 241 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 32 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 36 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 22 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 3001 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 3001 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 3001 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 3001 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%222, %223) {dfg_id = 256 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 25 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// CHECK-LLVM2NEURA-MAP-NEXT: %224 = "neura.data_mov"(%140) {dfg_id = 181 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 12008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 12008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 12008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 12008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %225 = "neura.load"(%224) {dfg_id = 200 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %226 = "neura.data_mov"(%225) {dfg_id = 218 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 42 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %227 = "neura.data_mov"(%143) {dfg_id = 178 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %228 = "neura.add"(%226, %227) {dfg_id = 226 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %229 = "neura.data_mov"(%228) {dfg_id = 231 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 8016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: %230 = "neura.data_mov"(%140) {dfg_id = 180 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 8009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 8009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 8009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 8009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 8009 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 8009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 8009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 8009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 8009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%229, %230) {dfg_id = 236 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %140 -> %118 {dfg_id = 179 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 4009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 4009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 4009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 4009 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 4009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 4009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %146 -> %115 {dfg_id = 176 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %128 -> %112 {dfg_id = 190 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %131 -> %109 {dfg_id = 187 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 1016 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 1016 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 1016 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 1016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 1016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 1016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 1016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 1016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %134 -> %106 {dfg_id = 185 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}, {id = 4010 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 4010 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 4010 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 4010 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 4010 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 4010 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 4010 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 4010 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 4010 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %137 -> %103 {dfg_id = 183 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %143 -> %100 {dfg_id = 177 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 194 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 194 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 194 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 194 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 194 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 194 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 194 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 194 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 194 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data -// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %149 -> %97 {dfg_id = 175 : i32, mapping_locs = [{id = 458 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 458 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 458 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 458 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 458 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 458 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 458 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 458 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 458 : i32, index_per_ii = 3 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 458 : i32, index_per_ii = 4 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %119 = "neura.data_mov"(%72) {dfg_id = 110 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %120 = neura.phi_start %119, %118 {dfg_id = 122 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %121 = "neura.data_mov"(%120) {dfg_id = 141 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %122 = "neura.load"(%121) {dfg_id = 145 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %123 = "neura.data_mov"(%122) {dfg_id = 147 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %124 = "neura.data_mov"(%117) {dfg_id = 138 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 17 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %125 = "neura.icmp"(%123, %124) <{cmpType = "slt"}> {dfg_id = 148 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %126 = "neura.data_mov"(%114) {dfg_id = 135 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %127 = "neura.data_mov"(%125) {dfg_id = 157 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %128 = neura.grant_predicate %126, %127 {dfg_id = 166 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %129 = "neura.data_mov"(%111) {dfg_id = 133 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %130 = "neura.data_mov"(%125) {dfg_id = 156 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %131 = neura.grant_predicate %129, %130 {dfg_id = 165 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %132 = "neura.data_mov"(%108) {dfg_id = 131 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %133 = "neura.data_mov"(%125) {dfg_id = 155 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 20 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %134 = neura.grant_predicate %132, %133 {dfg_id = 164 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %135 = "neura.data_mov"(%105) {dfg_id = 129 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %136 = "neura.data_mov"(%125) {dfg_id = 154 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %137 = neura.grant_predicate %135, %136 {dfg_id = 163 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %138 = "neura.data_mov"(%120) {dfg_id = 140 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %139 = "neura.data_mov"(%125) {dfg_id = 153 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %140 = neura.grant_predicate %138, %139 {dfg_id = 162 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %141 = "neura.data_mov"(%102) {dfg_id = 127 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %142 = "neura.data_mov"(%125) {dfg_id = 152 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %143 = neura.grant_predicate %141, %142 {dfg_id = 161 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %144 = "neura.data_mov"(%117) {dfg_id = 137 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 200 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %145 = "neura.data_mov"(%125) {dfg_id = 151 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %146 = neura.grant_predicate %144, %145 {dfg_id = 160 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %147 = "neura.data_mov"(%99) {dfg_id = 143 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %148 = "neura.data_mov"(%125) {dfg_id = 150 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 289 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 289 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %149 = neura.grant_predicate %147, %148 {dfg_id = 159 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %150 = "neura.data_mov"(%125) {dfg_id = 149 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %151 = "neura.not"(%150) {dfg_id = 158 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %152 = "neura.data_mov"(%111) {dfg_id = 132 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 17 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %153 = "neura.data_mov"(%151) {dfg_id = 174 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 169 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %154 = neura.grant_predicate %152, %153 {dfg_id = 199 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %155 = "neura.data_mov"(%102) {dfg_id = 126 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 29 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %156 = "neura.data_mov"(%151) {dfg_id = 173 : i32, mapping_locs = [{id = 177 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 11 : i32}, {id = 177 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 177 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 177 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 177 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 177 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %157 = neura.grant_predicate %155, %156 {dfg_id = 198 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %158 = "neura.data_mov"(%117) {dfg_id = 136 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 200 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %159 = "neura.data_mov"(%151) {dfg_id = 172 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 192 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %160 = neura.grant_predicate %158, %159 {dfg_id = 197 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %161 = "neura.data_mov"(%99) {dfg_id = 142 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 289 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %162 = "neura.data_mov"(%151) {dfg_id = 171 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 297 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 297 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 297 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 297 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 297 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 297 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %163 = neura.grant_predicate %161, %162 {dfg_id = 196 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %164 = "neura.data_mov"(%120) {dfg_id = 139 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %165 = "neura.data_mov"(%151) {dfg_id = 170 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %166 = neura.grant_predicate %164, %165 {dfg_id = 195 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %167 = "neura.data_mov"(%114) {dfg_id = 134 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 322 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 322 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 322 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 322 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 322 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 322 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 322 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %168 = "neura.data_mov"(%151) {dfg_id = 169 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 20 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %169 = neura.grant_predicate %167, %168 {dfg_id = 194 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %170 = "neura.data_mov"(%108) {dfg_id = 130 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %171 = "neura.data_mov"(%151) {dfg_id = 168 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 20 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %172 = neura.grant_predicate %170, %171 {dfg_id = 193 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %173 = "neura.data_mov"(%105) {dfg_id = 128 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 202 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 202 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 202 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 202 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 202 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %174 = "neura.data_mov"(%151) {dfg_id = 167 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 208 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 208 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 208 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 208 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 208 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %175 = neura.grant_predicate %173, %174 {dfg_id = 192 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %176 = "neura.data_mov"(%154) {dfg_id = 217 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 19 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %177 = "neura.load"(%176) {dfg_id = 225 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %178 = "neura.data_mov"(%177) {dfg_id = 230 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %179 = "neura.data_mov"(%157) {dfg_id = 214 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %180 = "neura.add"(%178, %179) {dfg_id = 235 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 240 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %182 = "neura.data_mov"(%154) {dfg_id = 216 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 19 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 2000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%181, %182) {dfg_id = 245 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %154 -> %57 {dfg_id = 215 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %160 -> %54 {dfg_id = 212 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 233 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 233 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 233 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 233 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 233 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %163 -> %51 {dfg_id = 211 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 40 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 12008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 12008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 12008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 12008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 12008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 12008 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 12008 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 12008 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %166 -> %48 {dfg_id = 210 : i32, mapping_locs = [{id = 1009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 1009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 1009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 1009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 1009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 1009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 1009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 1009 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %169 -> %45 {dfg_id = 209 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 202 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 202 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 202 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 202 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %172 -> %42 {dfg_id = 208 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 25 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %175 -> %39 {dfg_id = 207 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 15 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 1010 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 1010 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 1010 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 1010 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 1010 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %157 -> %36 {dfg_id = 213 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %183 = "neura.data_mov"(%128) {dfg_id = 191 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %184 = "neura.load"(%183) {dfg_id = 206 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %185 = "neura.data_mov"(%131) {dfg_id = 189 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 2000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %186 = "neura.load"(%185) {dfg_id = 205 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %187 = "neura.data_mov"(%186) {dfg_id = 223 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %188 = neura.sext %187 {dfg_id = 229 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %189 = "neura.data_mov"(%184) {dfg_id = 224 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 33 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %190 = "neura.data_mov"(%188) {dfg_id = 234 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %191 = "neura.gep"(%189, %190) <{operandSegmentSizes = array}> {dfg_id = 239 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %192 = "neura.data_mov"(%191) {dfg_id = 244 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %193 = "neura.load"(%192) {dfg_id = 248 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %194 = "neura.data_mov"(%134) {dfg_id = 186 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 27 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %195 = "neura.load"(%194) {dfg_id = 203 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %196 = "neura.data_mov"(%131) {dfg_id = 188 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %197 = "neura.load"(%196) {dfg_id = 204 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %198 = "neura.data_mov"(%197) {dfg_id = 222 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %199 = neura.sext %198 {dfg_id = 228 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %200 = "neura.data_mov"(%195) {dfg_id = 221 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 29 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %201 = "neura.data_mov"(%199) {dfg_id = 233 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %202 = "neura.gep"(%200, %201) <{operandSegmentSizes = array}> {dfg_id = 238 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %203 = "neura.data_mov"(%202) {dfg_id = 243 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %204 = "neura.load"(%203) {dfg_id = 247 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %205 = "neura.data_mov"(%193) {dfg_id = 251 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %206 = "neura.data_mov"(%204) {dfg_id = 250 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %207 = "neura.mul"(%205, %206) {dfg_id = 252 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %208 = "neura.data_mov"(%137) {dfg_id = 184 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %209 = "neura.load"(%208) {dfg_id = 202 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %210 = "neura.data_mov"(%140) {dfg_id = 182 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %211 = "neura.load"(%210) {dfg_id = 201 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %212 = "neura.data_mov"(%211) {dfg_id = 219 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %213 = neura.sext %212 {dfg_id = 227 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %214 = "neura.data_mov"(%209) {dfg_id = 220 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %215 = "neura.data_mov"(%213) {dfg_id = 232 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %216 = "neura.gep"(%214, %215) <{operandSegmentSizes = array}> {dfg_id = 237 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %217 = "neura.data_mov"(%216) {dfg_id = 242 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %218 = "neura.load"(%217) {dfg_id = 246 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %219 = "neura.data_mov"(%218) {dfg_id = 249 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %220 = "neura.data_mov"(%207) {dfg_id = 253 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %221 = "neura.add"(%219, %220) {dfg_id = 254 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %222 = "neura.data_mov"(%221) {dfg_id = 255 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %223 = "neura.data_mov"(%216) {dfg_id = 241 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%222, %223) {dfg_id = 256 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: %224 = "neura.data_mov"(%140) {dfg_id = 181 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 12 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 26 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %225 = "neura.load"(%224) {dfg_id = 200 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %226 = "neura.data_mov"(%225) {dfg_id = 218 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %227 = "neura.data_mov"(%143) {dfg_id = 178 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %228 = "neura.add"(%226, %227) {dfg_id = 226 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %229 = "neura.data_mov"(%228) {dfg_id = 231 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: %230 = "neura.data_mov"(%140) {dfg_id = 180 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 12 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 8009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 8009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 8009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 8009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 8009 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: "neura.store"(%229, %230) {dfg_id = 236 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %140 -> %118 {dfg_id = 179 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %146 -> %115 {dfg_id = 176 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 232 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 232 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 232 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 232 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 232 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 232 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 232 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 232 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 232 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 232 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %128 -> %112 {dfg_id = 190 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 328 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 328 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 328 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 328 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 328 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %131 -> %109 {dfg_id = 187 : i32, mapping_locs = [{id = 201 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 201 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 201 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 201 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 201 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 201 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 201 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 201 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 201 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 201 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 201 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 201 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 201 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %134 -> %106 {dfg_id = 185 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 321 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 321 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 321 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 321 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 321 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 321 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 321 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 321 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %137 -> %103 {dfg_id = 183 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 2008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 2008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 2008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 2008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 2008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %143 -> %100 {dfg_id = 177 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 27 : i32}, {id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 28 : i32}, {id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data +// CHECK-LLVM2NEURA-MAP-NEXT: neura.ctrl_mov %149 -> %97 {dfg_id = 175 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 8008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 8008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 8008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 8008 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 8008 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 8008 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}, {id = 8008 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 29 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 30 : i32}]} : !neura.data !neura.data // CHECK-LLVM2NEURA-MAP-NEXT: neura.yield {dfg_id = 24 : i32} // CHECK-LLVM2NEURA-MAP-NEXT: } -// CHECK-LLVM2NEURA-MAP-NEXT: llvm.func @printf(!llvm.ptr {llvm.noundef}, ...) -> i32 attributes {frame_pointer = #llvm.framePointerKind, passthrough = {{[[]}}["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic"} -// CHECK-LLVM2NEURA-MAP-NEXT: } + + diff --git a/test/e2e/histogram/histogram_kernel.mlir b/test/e2e/histogram/histogram_kernel.mlir index 30cba49c..85bbd3eb 100644 --- a/test/e2e/histogram/histogram_kernel.mlir +++ b/test/e2e/histogram/histogram_kernel.mlir @@ -25,47 +25,47 @@ -// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 6 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = neura.reserve {dfg_id = 1 : i32} : !neura.data -// MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %3 = neura.phi_start %2, %1 {dfg_id = 4 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %4 = "neura.data_mov"(%3) {dfg_id = 6 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %5 = "neura.gep"(%4) <{operandSegmentSizes = array}> {dfg_id = 8 : i32, lhs_value = "%arg0", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %6 = "neura.data_mov"(%5) {dfg_id = 11 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = "neura.load"(%6) {dfg_id = 13 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.mul"(%8) {dfg_id = 20 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = 5 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.add"(%10) {dfg_id = 26 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = -5 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%11) {dfg_id = 28 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = "neura.div"(%12) {dfg_id = 29 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = 18 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 30 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = neura.sext %14 {dfg_id = 31 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 32 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %17 = "neura.gep"(%16) <{operandSegmentSizes = array}> {dfg_id = 33 : i32, lhs_value = "%arg1", mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.data_mov"(%17) {dfg_id = 35 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %19 = "neura.load"(%18) {dfg_id = 36 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 37 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = "neura.add"(%20) {dfg_id = 38 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 0 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%21) {dfg_id = 39 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = "neura.data_mov"(%17) {dfg_id = 34 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%22, %23) {dfg_id = 40 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %24 = "neura.data_mov"(%3) {dfg_id = 5 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.add"(%24) {dfg_id = 7 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 10 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "eq"}> {dfg_id = 12 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 20 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%27) {dfg_id = 16 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.not"(%28) {dfg_id = 19 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = "neura.data_mov"(%25) {dfg_id = 9 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%29) {dfg_id = 22 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = neura.grant_predicate %30, %31 {dfg_id = 25 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %32 -> %1 {dfg_id = 27 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %33 = "neura.data_mov"(%27) {dfg_id = 14 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 15 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = neura.grant_predicate %33, %34 {dfg_id = 18 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 21 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %36 : !neura.data {dfg_id = 24 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} +// MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %3 = neura.phi_start %2, %1 {dfg_id = 4 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %4 = "neura.data_mov"(%3) {dfg_id = 6 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %5 = "neura.gep"(%4) <{operandSegmentSizes = array}> {dfg_id = 8 : i32, lhs_value = "%arg0", mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %6 = "neura.data_mov"(%5) {dfg_id = 11 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = "neura.load"(%6) {dfg_id = 13 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.mul"(%8) {dfg_id = 20 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 5 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.add"(%10) {dfg_id = 26 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = -5 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%11) {dfg_id = 28 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = "neura.div"(%12) {dfg_id = 29 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 18 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 30 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = neura.sext %14 {dfg_id = 31 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 32 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %17 = "neura.gep"(%16) <{operandSegmentSizes = array}> {dfg_id = 33 : i32, lhs_value = "%arg1", mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.data_mov"(%17) {dfg_id = 35 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = "neura.load"(%18) {dfg_id = 36 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = "neura.data_mov"(%19) {dfg_id = 37 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = "neura.add"(%20) {dfg_id = 38 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%21) {dfg_id = 39 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.data_mov"(%17) {dfg_id = 34 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%22, %23) {dfg_id = 40 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %24 = "neura.data_mov"(%3) {dfg_id = 5 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.add"(%24) {dfg_id = 7 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 10 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "eq"}> {dfg_id = 12 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 20 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%27) {dfg_id = 16 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.not"(%28) {dfg_id = 19 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = "neura.data_mov"(%25) {dfg_id = 9 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%29) {dfg_id = 22 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = neura.grant_predicate %30, %31 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %32 -> %1 {dfg_id = 27 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %33 = "neura.data_mov"(%27) {dfg_id = 14 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 15 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = neura.grant_predicate %33, %34 {dfg_id = 18 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 21 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %36 : !neura.data {dfg_id = 24 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} // MAPPING-NEXT: neura.yield {dfg_id = 2 : i32} // MAPPING-NEXT: } // MAPPING-NEXT: } @@ -73,214 +73,54 @@ // YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 5 +// YAML-NEXT: compiled_ii: 6 // YAML-NEXT: cores: -// YAML-NEXT: - column: 2 +// YAML-NEXT: - column: 0 // YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" +// YAML-NEXT: core_id: "0" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 36 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 2 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 38 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 2 +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 0 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" +// YAML-NEXT: - operand: "#0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 40 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 2 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEXT" -// YAML-NEXT: id: 31 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 33 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "3" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "ADD" // YAML-NEXT: id: 26 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#-5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DIV" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#18" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 13 -// YAML-NEXT: time_step: 4 +// YAML-NEXT: time_step: 5 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 18 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 2 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 24 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 2 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 14 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "#-5" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 110001 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 25 -// YAML-NEXT: time_step: 5 +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 27 +// YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" @@ -292,149 +132,106 @@ // YAML-NEXT: time_step: 1 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 7 +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 8 // YAML-NEXT: time_step: 2 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "arg0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 12 +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 13 // YAML-NEXT: time_step: 3 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#20" -// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 19 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "11" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 8 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: +// YAML-NEXT: - opcode: "MUL" -// ASM: # Compiled II: 5 -// ASM: PE(2,0): +// ASM: # Compiled II: 6 +// ASM: PE(0,0): // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$0] (t=10, inv_iters=2) +// ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED] (t=0, inv_iters=0) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0] (t=11, inv_iters=2) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$8] (t=12, inv_iters=2) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [EAST, RED] -> [$0] (t=8, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [$0], [$8] (t=9, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(3,0): +// ASM-NEXT: ADD, [EAST, RED], [#-5] -> [NORTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [#5] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$0] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#-5] -> [$0] (t=6, inv_iters=1) +// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [$0], [NORTH, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: DIV, [$0], [#18] -> [WEST, RED] (t=7, inv_iters=1) +// ASM-NEXT: GEP, [arg0], [$0] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: LOAD, [$0] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: MUL, [$0], [#5] -> [WEST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(2,1): +// ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [$1] (t=10, inv_iters=2) +// ASM-NEXT: DIV, [SOUTH, RED], [#18] -> [$0] (t=6, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [$1] (t=11, inv_iters=2) +// ASM-NEXT: SEXT, [$0] -> [$0] (t=7, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(3,1): +// ASM-NEXT: GEP, [arg1], [$0] -> [$0], [$8] (t=8, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: LOAD, [$0] -> [$0] (t=9, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(2,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$0] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [EAST, RED], [$0] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: STORE, [$0], [$8] (t=11, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) +// ASM-NEXT: ADD, [SOUTH, RED], [#1] -> [$0], [$8] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#20] -> [$0], [SOUTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: ICMP_EQ, [$0], [#20] -> [$0], [NORTH, RED] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { // ASM-NEXT: NOT, [$0] -> [$0] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(3,2): // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=0, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [SOUTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM: PE(1,2): // ASM-NEXT: { -// ASM-NEXT: GEP, [arg0], [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [$8] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [$8] (t=11, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) diff --git a/test/e2e/spmv/spmv_kernel.mlir b/test/e2e/spmv/spmv_kernel.mlir index 9a7fbfdd..c2a79826 100644 --- a/test/e2e/spmv/spmv_kernel.mlir +++ b/test/e2e/spmv/spmv_kernel.mlir @@ -22,309 +22,332 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 14 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 9 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 15 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 9 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 12 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %4 = "neura.icmp"(%3) <{cmpType = "sgt"}> {dfg_id = 14 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %5 = "neura.data_mov"(%4) {dfg_id = 16 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %6 = "neura.grant_once"(%5) {dfg_id = 18 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = "neura.data_mov"(%4) {dfg_id = 15 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 4004 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 2 : i32}, {id = 4004 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 3 : i32}, {id = 4004 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 4 : i32}, {id = 4004 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 5 : i32}, {id = 4004 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 6 : i32}, {id = 4004 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 7 : i32}, {id = 4004 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 8 : i32}, {id = 4004 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 9 : i32}, {id = 4004 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 10 : i32}, {id = 4004 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 11 : i32}, {id = 4004 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 12 : i32}, {id = 4004 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 13 : i32}, {id = 4004 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 14 : i32}, {id = 4004 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 15 : i32}, {id = 4004 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 4 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %8 = "neura.not"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 19 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%6) {dfg_id = 22 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 26 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%2) {dfg_id = 13 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.data_mov"(%6) {dfg_id = 21 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 25 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%6) {dfg_id = 20 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 2 : i32}, {id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 3 : i32}, {id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 4 : i32}, {id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 5 : i32}, {id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 2 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.not"(%17) {dfg_id = 24 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %19 = "neura.data_mov"(%10) {dfg_id = 27 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = "neura.data_mov"(%18) {dfg_id = 28 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 4009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 4009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = neura.grant_predicate %19, %20 {dfg_id = 34 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%13) {dfg_id = 33 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = neura.zext %22 {dfg_id = 36 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 42 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 1000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 1000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.and"(%24) {dfg_id = 46 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%13) {dfg_id = 32 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "ult"}> {dfg_id = 35 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 4 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%16) {dfg_id = 31 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 12 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %4 = "neura.icmp"(%3) <{cmpType = "sgt"}> {dfg_id = 14 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %5 = "neura.data_mov"(%4) {dfg_id = 16 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %6 = "neura.grant_once"(%5) {dfg_id = 18 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = "neura.data_mov"(%4) {dfg_id = 15 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 3000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 3000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 3000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 3000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 3000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 3000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 3000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 3000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 3000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 3000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 3000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %8 = "neura.not"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 19 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%6) {dfg_id = 22 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 26 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%2) {dfg_id = 13 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.data_mov"(%6) {dfg_id = 21 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%6) {dfg_id = 20 : i32, mapping_locs = [{id = 1016 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 3001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 3001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 3001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 3001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 3001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 3001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 3001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 3001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 3001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 3001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 3001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 3001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 3001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 3001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.not"(%17) {dfg_id = 24 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = "neura.data_mov"(%10) {dfg_id = 27 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = "neura.data_mov"(%18) {dfg_id = 28 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = neura.grant_predicate %19, %20 {dfg_id = 34 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%13) {dfg_id = 33 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = neura.zext %22 {dfg_id = 36 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 42 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.and"(%24) {dfg_id = 46 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%13) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "ult"}> {dfg_id = 35 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 4 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%16) {dfg_id = 31 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 45 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%16) {dfg_id = 30 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 16 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 44 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 38 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.not"(%34) {dfg_id = 43 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%23) {dfg_id = 41 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%35) {dfg_id = 48 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%16) {dfg_id = 30 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 1001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 1001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1009 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 1009 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}, {id = 1009 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 1009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 1009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 1009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 1009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 1009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 1009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 44 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 38 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.not"(%34) {dfg_id = 43 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%23) {dfg_id = 41 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%35) {dfg_id = 48 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %38 = neura.grant_predicate %36, %37 {dfg_id = 54 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %39 = "neura.data_mov"(%16) {dfg_id = 29 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %40 = "neura.data_mov"(%35) {dfg_id = 47 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %39 = "neura.data_mov"(%16) {dfg_id = 29 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %40 = "neura.data_mov"(%35) {dfg_id = 47 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %41 = neura.grant_predicate %39, %40 {dfg_id = 53 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %42 = "neura.data_mov"(%38) {dfg_id = 59 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %43 = "neura.and"(%42) {dfg_id = 66 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 2147483644 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %44 = neura.reserve {dfg_id = 3 : i32} : !neura.data -// MAPPING-NEXT: %45 = "neura.data_mov"(%41) {dfg_id = 58 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 6 : i32}, {id = 4002 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 7 : i32}, {id = 4002 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 8 : i32}, {id = 4002 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 4002 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %46 = neura.phi_start %45, %44 {dfg_id = 65 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %45 = "neura.data_mov"(%41) {dfg_id = 58 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %46 = neura.phi_start %45, %44 {dfg_id = 65 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %47 = neura.reserve {dfg_id = 4 : i32} : !neura.data -// MAPPING-NEXT: %48 = "neura.data_mov"(%43) {dfg_id = 79 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %49 = neura.phi_start %48, %47 {dfg_id = 92 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %48 = "neura.data_mov"(%43) {dfg_id = 79 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %49 = neura.phi_start %48, %47 {dfg_id = 92 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %50 = neura.reserve {dfg_id = 5 : i32} : !neura.data // MAPPING-NEXT: %51 = "neura.data_mov"(%41) {dfg_id = 57 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %52 = neura.phi_start %51, %50 {dfg_id = 64 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %53 = neura.reserve {dfg_id = 6 : i32} : !neura.data // MAPPING-NEXT: %54 = "neura.data_mov"(%41) {dfg_id = 56 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %55 = neura.phi_start %54, %53 {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %56 = "neura.data_mov"(%55) {dfg_id = 75 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %57 = "neura.gep"(%56) <{operandSegmentSizes = array}> {dfg_id = 90 : i32, lhs_value = "%arg1", mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%57) {dfg_id = 107 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 26 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 12000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %59 = "neura.load"(%58) {dfg_id = 124 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %60 = "neura.data_mov"(%55) {dfg_id = 74 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %61 = "neura.gep"(%60) <{operandSegmentSizes = array}> {dfg_id = 89 : i32, lhs_value = "%arg2", mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %62 = "neura.data_mov"(%61) {dfg_id = 106 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %63 = "neura.load"(%62) {dfg_id = 123 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %64 = "neura.data_mov"(%63) {dfg_id = 137 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %65 = neura.sext %64 {dfg_id = 154 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%65) {dfg_id = 168 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 12000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.gep"(%66) <{operandSegmentSizes = array}> {dfg_id = 182 : i32, lhs_value = "%arg4", mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %68 = "neura.data_mov"(%67) {dfg_id = 197 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %69 = "neura.load"(%68) {dfg_id = 211 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 224 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %71 = "neura.data_mov"(%59) {dfg_id = 138 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.mul"(%70, %71) {dfg_id = 233 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %73 = "neura.data_mov"(%55) {dfg_id = 73 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %74 = "neura.gep"(%73) <{operandSegmentSizes = array}> {dfg_id = 88 : i32, lhs_value = "%arg3", mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %75 = "neura.data_mov"(%74) {dfg_id = 105 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 8000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %76 = "neura.load"(%75) {dfg_id = 122 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %77 = "neura.data_mov"(%76) {dfg_id = 136 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %78 = neura.sext %77 {dfg_id = 153 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %79 = "neura.data_mov"(%78) {dfg_id = 167 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = "neura.gep"(%79) <{operandSegmentSizes = array}> {dfg_id = 181 : i32, lhs_value = "%arg5", mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%80) {dfg_id = 196 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 27 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 8016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.load"(%81) {dfg_id = 210 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = "neura.data_mov"(%82) {dfg_id = 223 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %84 = "neura.data_mov"(%72) {dfg_id = 242 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %85 = "neura.add"(%83, %84) {dfg_id = 251 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%85) {dfg_id = 260 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %87 = "neura.data_mov"(%80) {dfg_id = 195 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12010 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 12010 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 12010 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 12010 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 12010 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 270 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %88 = "neura.data_mov"(%55) {dfg_id = 72 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 192 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %89 = "neura.or"(%88) {dfg_id = 87 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 104 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 224 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 224 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %91 = "neura.gep"(%90) <{operandSegmentSizes = array}> {dfg_id = 121 : i32, lhs_value = "%arg1", mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %92 = "neura.data_mov"(%91) {dfg_id = 135 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 3008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 3008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %93 = "neura.load"(%92) {dfg_id = 152 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 103 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %95 = "neura.gep"(%94) <{operandSegmentSizes = array}> {dfg_id = 120 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %96 = "neura.data_mov"(%95) {dfg_id = 134 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %97 = "neura.load"(%96) {dfg_id = 151 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %98 = "neura.data_mov"(%97) {dfg_id = 165 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 2000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %99 = neura.sext %98 {dfg_id = 180 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 194 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 209 : i32, lhs_value = "%arg4", mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 222 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %103 = "neura.load"(%102) {dfg_id = 232 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %104 = "neura.data_mov"(%103) {dfg_id = 241 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %105 = "neura.data_mov"(%93) {dfg_id = 166 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %106 = "neura.mul"(%104, %105) {dfg_id = 250 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %107 = "neura.data_mov"(%89) {dfg_id = 102 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %108 = "neura.gep"(%107) <{operandSegmentSizes = array}> {dfg_id = 119 : i32, lhs_value = "%arg3", mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %109 = "neura.data_mov"(%108) {dfg_id = 133 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 27 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %110 = "neura.load"(%109) {dfg_id = 150 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %111 = "neura.data_mov"(%110) {dfg_id = 164 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %112 = neura.sext %111 {dfg_id = 179 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 193 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %114 = "neura.gep"(%113) <{operandSegmentSizes = array}> {dfg_id = 208 : i32, lhs_value = "%arg5", mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 221 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 25 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = "neura.load"(%115) {dfg_id = 231 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %117 = "neura.data_mov"(%116) {dfg_id = 240 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %118 = "neura.data_mov"(%106) {dfg_id = 259 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 21 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %119 = "neura.add"(%117, %118) {dfg_id = 269 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %120 = "neura.data_mov"(%119) {dfg_id = 277 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %121 = "neura.data_mov"(%114) {dfg_id = 220 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 29 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 2000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%120, %121) {dfg_id = 286 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %122 = "neura.data_mov"(%55) {dfg_id = 71 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4003 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 9 : i32}, {id = 4003 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 10 : i32}, {id = 4003 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 11 : i32}, {id = 4003 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %123 = "neura.or"(%122) {dfg_id = 86 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 2 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %124 = "neura.data_mov"(%123) {dfg_id = 101 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 16 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 30 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %125 = "neura.gep"(%124) <{operandSegmentSizes = array}> {dfg_id = 118 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 132 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 12001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 12001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 12001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %127 = "neura.load"(%126) {dfg_id = 149 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %128 = "neura.data_mov"(%123) {dfg_id = 100 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %129 = "neura.gep"(%128) <{operandSegmentSizes = array}> {dfg_id = 117 : i32, lhs_value = "%arg2", mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %130 = "neura.data_mov"(%129) {dfg_id = 131 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 148 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %132 = "neura.data_mov"(%131) {dfg_id = 162 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %133 = neura.sext %132 {dfg_id = 178 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %134 = "neura.data_mov"(%133) {dfg_id = 192 : i32, mapping_locs = [{id = 41 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %135 = "neura.gep"(%134) <{operandSegmentSizes = array}> {dfg_id = 207 : i32, lhs_value = "%arg4", mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %136 = "neura.data_mov"(%135) {dfg_id = 219 : i32, mapping_locs = [{id = 43 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 40 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 12008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 12008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 12008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %137 = "neura.load"(%136) {dfg_id = 230 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %138 = "neura.data_mov"(%137) {dfg_id = 239 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %139 = "neura.data_mov"(%127) {dfg_id = 163 : i32, mapping_locs = [{id = 12009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 12009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %140 = "neura.mul"(%138, %139) {dfg_id = 249 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %141 = "neura.data_mov"(%123) {dfg_id = 99 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 15 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %142 = "neura.gep"(%141) <{operandSegmentSizes = array}> {dfg_id = 116 : i32, lhs_value = "%arg3", mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %143 = "neura.data_mov"(%142) {dfg_id = 130 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 147 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %145 = "neura.data_mov"(%144) {dfg_id = 161 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %146 = neura.sext %145 {dfg_id = 177 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %147 = "neura.data_mov"(%146) {dfg_id = 191 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 206 : i32, lhs_value = "%arg5", mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 218 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 3001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 3001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 3001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 229 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %151 = "neura.data_mov"(%150) {dfg_id = 238 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 23 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 37 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %152 = "neura.data_mov"(%140) {dfg_id = 258 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 41 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 44 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %153 = "neura.add"(%151, %152) {dfg_id = 268 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 3 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %154 = "neura.data_mov"(%153) {dfg_id = 276 : i32, mapping_locs = [{id = 47 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 26 : i32}, {id = 36 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 27 : i32}, {id = 22 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 28 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %155 = "neura.data_mov"(%148) {dfg_id = 217 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 3001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 3001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 3001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 3001 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 3001 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 3001 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}, {id = 3001 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 26 : i32}, {id = 3001 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 27 : i32}, {id = 3001 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 28 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%154, %155) {dfg_id = 285 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 29 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %156 = "neura.data_mov"(%55) {dfg_id = 70 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %157 = "neura.or"(%156) {dfg_id = 85 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %158 = "neura.data_mov"(%157) {dfg_id = 98 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %159 = "neura.gep"(%158) <{operandSegmentSizes = array}> {dfg_id = 115 : i32, lhs_value = "%arg1", mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %160 = "neura.data_mov"(%159) {dfg_id = 129 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %161 = "neura.load"(%160) {dfg_id = 146 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %162 = "neura.data_mov"(%157) {dfg_id = 97 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %163 = "neura.gep"(%162) <{operandSegmentSizes = array}> {dfg_id = 114 : i32, lhs_value = "%arg2", mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %164 = "neura.data_mov"(%163) {dfg_id = 128 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 19 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %165 = "neura.load"(%164) {dfg_id = 145 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %166 = "neura.data_mov"(%165) {dfg_id = 159 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %167 = neura.sext %166 {dfg_id = 176 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %168 = "neura.data_mov"(%167) {dfg_id = 190 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %169 = "neura.gep"(%168) <{operandSegmentSizes = array}> {dfg_id = 205 : i32, lhs_value = "%arg4", mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %170 = "neura.data_mov"(%169) {dfg_id = 216 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %171 = "neura.load"(%170) {dfg_id = 228 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 237 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 2008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 160 : i32, mapping_locs = [{id = 2016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 2016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 2016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %174 = "neura.mul"(%172, %173) {dfg_id = 248 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %175 = "neura.data_mov"(%157) {dfg_id = 96 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %176 = "neura.gep"(%175) <{operandSegmentSizes = array}> {dfg_id = 113 : i32, lhs_value = "%arg3", mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %177 = "neura.data_mov"(%176) {dfg_id = 127 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %178 = "neura.load"(%177) {dfg_id = 144 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %179 = "neura.data_mov"(%178) {dfg_id = 158 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 416 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %180 = neura.sext %179 {dfg_id = 175 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 189 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %182 = "neura.gep"(%181) <{operandSegmentSizes = array}> {dfg_id = 204 : i32, lhs_value = "%arg5", mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %183 = "neura.data_mov"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 25 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 11 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %184 = "neura.load"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %185 = "neura.data_mov"(%184) {dfg_id = 236 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %186 = "neura.data_mov"(%174) {dfg_id = 257 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 2008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %187 = "neura.add"(%185, %186) {dfg_id = 267 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %188 = "neura.data_mov"(%187) {dfg_id = 275 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %189 = "neura.data_mov"(%182) {dfg_id = 214 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 15 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 1001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 1001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 1001 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 1001 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 1001 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%188, %189) {dfg_id = 284 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %190 = "neura.data_mov"(%55) {dfg_id = 69 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %191 = "neura.add"(%190) {dfg_id = 84 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %56 = "neura.data_mov"(%55) {dfg_id = 75 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 20 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %57 = "neura.gep"(%56) <{operandSegmentSizes = array}> {dfg_id = 90 : i32, lhs_value = "%arg1", mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%57) {dfg_id = 107 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 19 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %59 = "neura.load"(%58) {dfg_id = 124 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %60 = "neura.data_mov"(%55) {dfg_id = 74 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %61 = "neura.gep"(%60) <{operandSegmentSizes = array}> {dfg_id = 89 : i32, lhs_value = "%arg2", mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %62 = "neura.data_mov"(%61) {dfg_id = 106 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %63 = "neura.load"(%62) {dfg_id = 123 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %64 = "neura.data_mov"(%63) {dfg_id = 137 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %65 = neura.sext %64 {dfg_id = 154 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%65) {dfg_id = 168 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.gep"(%66) <{operandSegmentSizes = array}> {dfg_id = 182 : i32, lhs_value = "%arg4", mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %68 = "neura.data_mov"(%67) {dfg_id = 197 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %69 = "neura.load"(%68) {dfg_id = 211 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 224 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 42 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %71 = "neura.data_mov"(%59) {dfg_id = 138 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 31 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.mul"(%70, %71) {dfg_id = 233 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %73 = "neura.data_mov"(%55) {dfg_id = 73 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 289 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 289 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 289 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %74 = "neura.gep"(%73) <{operandSegmentSizes = array}> {dfg_id = 88 : i32, lhs_value = "%arg3", mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %75 = "neura.data_mov"(%74) {dfg_id = 105 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %76 = "neura.load"(%75) {dfg_id = 122 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %77 = "neura.data_mov"(%76) {dfg_id = 136 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %78 = neura.sext %77 {dfg_id = 153 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %79 = "neura.data_mov"(%78) {dfg_id = 167 : i32, mapping_locs = [{id = 416 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = "neura.gep"(%79) <{operandSegmentSizes = array}> {dfg_id = 181 : i32, lhs_value = "%arg5", mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%80) {dfg_id = 196 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 12001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 12001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.load"(%81) {dfg_id = 210 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = "neura.data_mov"(%82) {dfg_id = 223 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %84 = "neura.data_mov"(%72) {dfg_id = 242 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %85 = "neura.add"(%83, %84) {dfg_id = 251 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%85) {dfg_id = 260 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 12000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %87 = "neura.data_mov"(%80) {dfg_id = 195 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 12008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 12008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 12008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 12008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 12008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 270 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %88 = "neura.data_mov"(%55) {dfg_id = 72 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 1008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %89 = "neura.or"(%88) {dfg_id = 87 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 104 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 2008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %91 = "neura.gep"(%90) <{operandSegmentSizes = array}> {dfg_id = 121 : i32, lhs_value = "%arg1", mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %92 = "neura.data_mov"(%91) {dfg_id = 135 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 3001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %93 = "neura.load"(%92) {dfg_id = 152 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 103 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %95 = "neura.gep"(%94) <{operandSegmentSizes = array}> {dfg_id = 120 : i32, lhs_value = "%arg2", mapping_locs = [{id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %96 = "neura.data_mov"(%95) {dfg_id = 134 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %97 = "neura.load"(%96) {dfg_id = 151 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %98 = "neura.data_mov"(%97) {dfg_id = 165 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %99 = neura.sext %98 {dfg_id = 180 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 194 : i32, mapping_locs = [{id = 23 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 209 : i32, lhs_value = "%arg4", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 222 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 3009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 3009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %103 = "neura.load"(%102) {dfg_id = 232 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %104 = "neura.data_mov"(%103) {dfg_id = 241 : i32, mapping_locs = [{id = 3002 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %105 = "neura.data_mov"(%93) {dfg_id = 166 : i32, mapping_locs = [{id = 3016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 3016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 3016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %106 = "neura.mul"(%104, %105) {dfg_id = 250 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %107 = "neura.data_mov"(%89) {dfg_id = 102 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %108 = "neura.gep"(%107) <{operandSegmentSizes = array}> {dfg_id = 119 : i32, lhs_value = "%arg3", mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %109 = "neura.data_mov"(%108) {dfg_id = 133 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %110 = "neura.load"(%109) {dfg_id = 150 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %111 = "neura.data_mov"(%110) {dfg_id = 164 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %112 = neura.sext %111 {dfg_id = 179 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 193 : i32, mapping_locs = [{id = 23 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %114 = "neura.gep"(%113) <{operandSegmentSizes = array}> {dfg_id = 208 : i32, lhs_value = "%arg5", mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 221 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = "neura.load"(%115) {dfg_id = 231 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %117 = "neura.data_mov"(%116) {dfg_id = 240 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %118 = "neura.data_mov"(%106) {dfg_id = 259 : i32, mapping_locs = [{id = 3002 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %119 = "neura.add"(%117, %118) {dfg_id = 269 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %120 = "neura.data_mov"(%119) {dfg_id = 277 : i32, mapping_locs = [{id = 3002 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %121 = "neura.data_mov"(%114) {dfg_id = 220 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 232 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 22 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 3008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 3008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 3008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 3008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%120, %121) {dfg_id = 286 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %122 = "neura.data_mov"(%55) {dfg_id = 71 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 289 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 289 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 289 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %123 = "neura.or"(%122) {dfg_id = 86 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 2 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %124 = "neura.data_mov"(%123) {dfg_id = 101 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %125 = "neura.gep"(%124) <{operandSegmentSizes = array}> {dfg_id = 118 : i32, lhs_value = "%arg1", mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 132 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 15 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %127 = "neura.load"(%126) {dfg_id = 149 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %128 = "neura.data_mov"(%123) {dfg_id = 100 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %129 = "neura.gep"(%128) <{operandSegmentSizes = array}> {dfg_id = 117 : i32, lhs_value = "%arg2", mapping_locs = [{id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %130 = "neura.data_mov"(%129) {dfg_id = 131 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 148 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %132 = "neura.data_mov"(%131) {dfg_id = 162 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %133 = neura.sext %132 {dfg_id = 178 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %134 = "neura.data_mov"(%133) {dfg_id = 192 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %135 = "neura.gep"(%134) <{operandSegmentSizes = array}> {dfg_id = 207 : i32, lhs_value = "%arg4", mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %136 = "neura.data_mov"(%135) {dfg_id = 219 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %137 = "neura.load"(%136) {dfg_id = 230 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %138 = "neura.data_mov"(%137) {dfg_id = 239 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %139 = "neura.data_mov"(%127) {dfg_id = 163 : i32, mapping_locs = [{id = 1016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 1016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %140 = "neura.mul"(%138, %139) {dfg_id = 249 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %141 = "neura.data_mov"(%123) {dfg_id = 99 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %142 = "neura.gep"(%141) <{operandSegmentSizes = array}> {dfg_id = 116 : i32, lhs_value = "%arg3", mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %143 = "neura.data_mov"(%142) {dfg_id = 130 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 147 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %145 = "neura.data_mov"(%144) {dfg_id = 161 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %146 = neura.sext %145 {dfg_id = 177 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %147 = "neura.data_mov"(%146) {dfg_id = 191 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 206 : i32, lhs_value = "%arg5", mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 218 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 229 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %151 = "neura.data_mov"(%150) {dfg_id = 238 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %152 = "neura.data_mov"(%140) {dfg_id = 258 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %153 = "neura.add"(%151, %152) {dfg_id = 268 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %154 = "neura.data_mov"(%153) {dfg_id = 276 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %155 = "neura.data_mov"(%148) {dfg_id = 217 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 8016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 8016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 8016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 8016 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%154, %155) {dfg_id = 285 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %156 = "neura.data_mov"(%55) {dfg_id = 70 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 169 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %157 = "neura.or"(%156) {dfg_id = 85 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %158 = "neura.data_mov"(%157) {dfg_id = 98 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 30 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %159 = "neura.gep"(%158) <{operandSegmentSizes = array}> {dfg_id = 115 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %160 = "neura.data_mov"(%159) {dfg_id = 129 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 12008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 12008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %161 = "neura.load"(%160) {dfg_id = 146 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %162 = "neura.data_mov"(%157) {dfg_id = 97 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %163 = "neura.gep"(%162) <{operandSegmentSizes = array}> {dfg_id = 114 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %164 = "neura.data_mov"(%163) {dfg_id = 128 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %165 = "neura.load"(%164) {dfg_id = 145 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %166 = "neura.data_mov"(%165) {dfg_id = 159 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %167 = neura.sext %166 {dfg_id = 176 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %168 = "neura.data_mov"(%167) {dfg_id = 190 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %169 = "neura.gep"(%168) <{operandSegmentSizes = array}> {dfg_id = 205 : i32, lhs_value = "%arg4", mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %170 = "neura.data_mov"(%169) {dfg_id = 216 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 3008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 3008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %171 = "neura.load"(%170) {dfg_id = 228 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 237 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 7 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 160 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 41 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 45 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 33 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %174 = "neura.mul"(%172, %173) {dfg_id = 248 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %175 = "neura.data_mov"(%157) {dfg_id = 96 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 192 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %176 = "neura.gep"(%175) <{operandSegmentSizes = array}> {dfg_id = 113 : i32, lhs_value = "%arg3", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %177 = "neura.data_mov"(%176) {dfg_id = 127 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %178 = "neura.load"(%177) {dfg_id = 144 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %179 = "neura.data_mov"(%178) {dfg_id = 158 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %180 = neura.sext %179 {dfg_id = 175 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 189 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %182 = "neura.gep"(%181) <{operandSegmentSizes = array}> {dfg_id = 204 : i32, lhs_value = "%arg5", mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %183 = "neura.data_mov"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %184 = "neura.load"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %185 = "neura.data_mov"(%184) {dfg_id = 236 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 2008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %186 = "neura.data_mov"(%174) {dfg_id = 257 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %187 = "neura.add"(%185, %186) {dfg_id = 267 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %188 = "neura.data_mov"(%187) {dfg_id = 275 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %189 = "neura.data_mov"(%182) {dfg_id = 214 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 2009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 2009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 2009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 2009 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%188, %189) {dfg_id = 284 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %190 = "neura.data_mov"(%55) {dfg_id = 69 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %191 = "neura.add"(%190) {dfg_id = 84 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data // MAPPING-NEXT: %192 = "neura.data_mov"(%52) {dfg_id = 76 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data // MAPPING-NEXT: %193 = "neura.add"(%192) {dfg_id = 91 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %194 = "neura.data_mov"(%193) {dfg_id = 109 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %195 = "neura.data_mov"(%49) {dfg_id = 111 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %196 = "neura.icmp"(%194, %195) <{cmpType = "eq"}> {dfg_id = 125 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %197 = "neura.data_mov"(%196) {dfg_id = 141 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %198 = "neura.not"(%197) {dfg_id = 157 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %199 = "neura.data_mov"(%191) {dfg_id = 95 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 33 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 193 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 193 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %200 = "neura.data_mov"(%198) {dfg_id = 174 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 201 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 201 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 201 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 201 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 201 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 201 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 201 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 201 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 201 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 188 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %201 -> %53 {dfg_id = 203 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %202 = "neura.data_mov"(%193) {dfg_id = 108 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %203 = "neura.data_mov"(%198) {dfg_id = 173 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %204 = neura.grant_predicate %202, %203 {dfg_id = 187 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %204 -> %50 {dfg_id = 202 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 160 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %205 = "neura.data_mov"(%49) {dfg_id = 110 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %206 = "neura.data_mov"(%198) {dfg_id = 172 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %207 = neura.grant_predicate %205, %206 {dfg_id = 186 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %207 -> %47 {dfg_id = 201 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %208 = "neura.data_mov"(%46) {dfg_id = 78 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = "neura.data_mov"(%198) {dfg_id = 171 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 28 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 329 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 329 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 329 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 329 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 185 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %210 -> %44 {dfg_id = 200 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 27 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 25 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 4016 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 4016 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %211 = "neura.data_mov"(%191) {dfg_id = 94 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %212 = "neura.data_mov"(%196) {dfg_id = 140 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 156 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %214 = "neura.data_mov"(%46) {dfg_id = 77 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %215 = "neura.data_mov"(%196) {dfg_id = 139 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 155 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %217 = "neura.data_mov"(%33) {dfg_id = 49 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 4000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %218 = "neura.data_mov"(%216) {dfg_id = 169 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %219 = "neura.phi"(%217, %218) {dfg_id = 183 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %220 = "neura.data_mov"(%30) {dfg_id = 50 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %221 = "neura.data_mov"(%213) {dfg_id = 170 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %222 = "neura.phi"(%220, %221) {dfg_id = 184 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %223 = "neura.data_mov"(%25) {dfg_id = 52 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %224 = "neura.icmp"(%223) <{cmpType = "eq"}> {dfg_id = 55 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %225 = "neura.data_mov"(%224) {dfg_id = 61 : i32, mapping_locs = [{id = 1008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 1008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 1008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 1008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 1008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %226 = "neura.data_mov"(%224) {dfg_id = 62 : i32, mapping_locs = [{id = 1008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 1008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 1008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 1008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 1008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 1008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 1008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 1008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 68 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %228 = "neura.data_mov"(%224) {dfg_id = 60 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %229 = "neura.not"(%228) {dfg_id = 67 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %230 = "neura.data_mov"(%222) {dfg_id = 199 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %231 = "neura.data_mov"(%229) {dfg_id = 82 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 213 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %233 = "neura.data_mov"(%219) {dfg_id = 198 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %234 = "neura.data_mov"(%229) {dfg_id = 81 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 168 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 212 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %236 = "neura.data_mov"(%25) {dfg_id = 51 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %237 = "neura.data_mov"(%229) {dfg_id = 80 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %238 = neura.grant_predicate %236, %237 {dfg_id = 93 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %194 = "neura.data_mov"(%193) {dfg_id = 109 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %195 = "neura.data_mov"(%49) {dfg_id = 111 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %196 = "neura.icmp"(%194, %195) <{cmpType = "eq"}> {dfg_id = 125 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %197 = "neura.data_mov"(%196) {dfg_id = 141 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %198 = "neura.not"(%197) {dfg_id = 157 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %199 = "neura.data_mov"(%191) {dfg_id = 95 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 20 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 321 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 321 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 321 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 321 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 321 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %200 = "neura.data_mov"(%198) {dfg_id = 174 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 20 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 328 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 188 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %201 -> %53 {dfg_id = 203 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 29 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %202 = "neura.data_mov"(%193) {dfg_id = 108 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %203 = "neura.data_mov"(%198) {dfg_id = 173 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %204 = neura.grant_predicate %202, %203 {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %204 -> %50 {dfg_id = 202 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %205 = "neura.data_mov"(%49) {dfg_id = 110 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %206 = "neura.data_mov"(%198) {dfg_id = 172 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %207 = neura.grant_predicate %205, %206 {dfg_id = 186 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %207 -> %47 {dfg_id = 201 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %208 = "neura.data_mov"(%46) {dfg_id = 78 : i32, mapping_locs = [{id = 291 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 291 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 291 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 291 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 291 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 291 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 291 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 291 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 291 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = "neura.data_mov"(%198) {dfg_id = 171 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 185 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %210 -> %44 {dfg_id = 200 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 297 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 297 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 297 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 297 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 297 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %211 = "neura.data_mov"(%191) {dfg_id = 94 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %212 = "neura.data_mov"(%196) {dfg_id = 140 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 156 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %214 = "neura.data_mov"(%46) {dfg_id = 77 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %215 = "neura.data_mov"(%196) {dfg_id = 139 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 155 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %217 = "neura.data_mov"(%33) {dfg_id = 49 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %218 = "neura.data_mov"(%216) {dfg_id = 169 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %219 = "neura.phi"(%217, %218) {dfg_id = 183 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %220 = "neura.data_mov"(%30) {dfg_id = 50 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %221 = "neura.data_mov"(%213) {dfg_id = 170 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %222 = "neura.phi"(%220, %221) {dfg_id = 184 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %223 = "neura.data_mov"(%25) {dfg_id = 52 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %224 = "neura.icmp"(%223) <{cmpType = "eq"}> {dfg_id = 55 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %225 = "neura.data_mov"(%224) {dfg_id = 61 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 4002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 4002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %226 = "neura.data_mov"(%224) {dfg_id = 62 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 4002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 4002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 68 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %228 = "neura.data_mov"(%224) {dfg_id = 60 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %229 = "neura.not"(%228) {dfg_id = 67 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %230 = "neura.data_mov"(%222) {dfg_id = 199 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %231 = "neura.data_mov"(%229) {dfg_id = 82 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 0 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 213 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %233 = "neura.data_mov"(%219) {dfg_id = 198 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %234 = "neura.data_mov"(%229) {dfg_id = 81 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 176 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 176 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 212 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %236 = "neura.data_mov"(%25) {dfg_id = 51 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 1002 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 1002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 1002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 1002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 1002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 1002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 1002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 1002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %237 = "neura.data_mov"(%229) {dfg_id = 80 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1010 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 1010 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 1010 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 1010 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 1010 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 1010 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %238 = neura.grant_predicate %236, %237 {dfg_id = 93 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %239 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %240 = "neura.data_mov"(%238) {dfg_id = 112 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %241 = neura.phi_start %240, %239 {dfg_id = 126 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %240 = "neura.data_mov"(%238) {dfg_id = 112 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %241 = neura.phi_start %240, %239 {dfg_id = 126 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %242 = neura.reserve {dfg_id = 8 : i32} : !neura.data -// MAPPING-NEXT: %243 = "neura.data_mov"(%235) {dfg_id = 225 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %244 = neura.phi_start %243, %242 {dfg_id = 234 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %243 = "neura.data_mov"(%235) {dfg_id = 225 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %244 = neura.phi_start %243, %242 {dfg_id = 234 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPING-NEXT: %245 = neura.reserve {dfg_id = 9 : i32} : !neura.data -// MAPPING-NEXT: %246 = "neura.data_mov"(%232) {dfg_id = 226 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %247 = neura.phi_start %246, %245 {dfg_id = 235 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %248 = "neura.data_mov"(%247) {dfg_id = 247 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 169 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 169 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 169 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 169 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %249 = "neura.gep"(%248) <{operandSegmentSizes = array}> {dfg_id = 256 : i32, lhs_value = "%arg1", mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %250 = "neura.data_mov"(%249) {dfg_id = 266 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 1001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %251 = "neura.load"(%250) {dfg_id = 274 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %252 = "neura.data_mov"(%247) {dfg_id = 246 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %253 = "neura.gep"(%252) <{operandSegmentSizes = array}> {dfg_id = 255 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %254 = "neura.data_mov"(%253) {dfg_id = 265 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %255 = "neura.load"(%254) {dfg_id = 273 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %256 = "neura.data_mov"(%255) {dfg_id = 282 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %257 = neura.sext %256 {dfg_id = 290 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %258 = "neura.data_mov"(%257) {dfg_id = 296 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %259 = "neura.gep"(%258) <{operandSegmentSizes = array}> {dfg_id = 302 : i32, lhs_value = "%arg4", mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %260 = "neura.data_mov"(%259) {dfg_id = 309 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %261 = "neura.load"(%260) {dfg_id = 312 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %262 = "neura.data_mov"(%261) {dfg_id = 314 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 2000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %263 = "neura.data_mov"(%251) {dfg_id = 283 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 2009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 2009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %264 = "neura.mul"(%262, %263) {dfg_id = 315 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %265 = "neura.data_mov"(%247) {dfg_id = 245 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 14 : i32}, {id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %266 = "neura.gep"(%265) <{operandSegmentSizes = array}> {dfg_id = 254 : i32, lhs_value = "%arg3", mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %267 = "neura.data_mov"(%266) {dfg_id = 264 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %268 = "neura.load"(%267) {dfg_id = 272 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %269 = "neura.data_mov"(%268) {dfg_id = 281 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %270 = neura.sext %269 {dfg_id = 289 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %271 = "neura.data_mov"(%270) {dfg_id = 295 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %272 = "neura.gep"(%271) <{operandSegmentSizes = array}> {dfg_id = 301 : i32, lhs_value = "%arg5", mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %273 = "neura.data_mov"(%272) {dfg_id = 308 : i32, mapping_locs = [{id = 3009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 3009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 3009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 3009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %274 = "neura.load"(%273) {dfg_id = 311 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %275 = "neura.data_mov"(%274) {dfg_id = 313 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %276 = "neura.data_mov"(%264) {dfg_id = 316 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %277 = "neura.add"(%275, %276) {dfg_id = 317 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %278 = "neura.data_mov"(%277) {dfg_id = 318 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %279 = "neura.data_mov"(%272) {dfg_id = 307 : i32, mapping_locs = [{id = 3009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 3009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 3009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 3009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 3009 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 3009 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%278, %279) {dfg_id = 319 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %280 = "neura.data_mov"(%247) {dfg_id = 244 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %281 = "neura.add"(%280) {dfg_id = 253 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %282 = "neura.data_mov"(%244) {dfg_id = 243 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %283 = "neura.add"(%282) {dfg_id = 252 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %284 = "neura.data_mov"(%283) {dfg_id = 262 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %285 = "neura.data_mov"(%241) {dfg_id = 143 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %286 = "neura.icmp"(%284, %285) <{cmpType = "eq"}> {dfg_id = 271 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %287 = "neura.data_mov"(%286) {dfg_id = 280 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %288 = "neura.not"(%287) {dfg_id = 288 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data - +// MAPPING-NEXT: %246 = "neura.data_mov"(%232) {dfg_id = 226 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %247 = neura.phi_start %246, %245 {dfg_id = 235 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %248 = "neura.data_mov"(%247) {dfg_id = 247 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %249 = "neura.gep"(%248) <{operandSegmentSizes = array}> {dfg_id = 256 : i32, lhs_value = "%arg1", mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %250 = "neura.data_mov"(%249) {dfg_id = 266 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %251 = "neura.load"(%250) {dfg_id = 274 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %252 = "neura.data_mov"(%247) {dfg_id = 246 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %253 = "neura.gep"(%252) <{operandSegmentSizes = array}> {dfg_id = 255 : i32, lhs_value = "%arg2", mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %254 = "neura.data_mov"(%253) {dfg_id = 265 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %255 = "neura.load"(%254) {dfg_id = 273 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %256 = "neura.data_mov"(%255) {dfg_id = 282 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %257 = neura.sext %256 {dfg_id = 290 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %258 = "neura.data_mov"(%257) {dfg_id = 296 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %259 = "neura.gep"(%258) <{operandSegmentSizes = array}> {dfg_id = 302 : i32, lhs_value = "%arg4", mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %260 = "neura.data_mov"(%259) {dfg_id = 309 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 12000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 12000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %261 = "neura.load"(%260) {dfg_id = 312 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %262 = "neura.data_mov"(%261) {dfg_id = 314 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %263 = "neura.data_mov"(%251) {dfg_id = 283 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %264 = "neura.mul"(%262, %263) {dfg_id = 315 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %265 = "neura.data_mov"(%247) {dfg_id = 245 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %266 = "neura.gep"(%265) <{operandSegmentSizes = array}> {dfg_id = 254 : i32, lhs_value = "%arg3", mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %267 = "neura.data_mov"(%266) {dfg_id = 264 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %268 = "neura.load"(%267) {dfg_id = 272 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %269 = "neura.data_mov"(%268) {dfg_id = 281 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %270 = neura.sext %269 {dfg_id = 289 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %271 = "neura.data_mov"(%270) {dfg_id = 295 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %272 = "neura.gep"(%271) <{operandSegmentSizes = array}> {dfg_id = 301 : i32, lhs_value = "%arg5", mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %273 = "neura.data_mov"(%272) {dfg_id = 308 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 12000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %274 = "neura.load"(%273) {dfg_id = 311 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %275 = "neura.data_mov"(%274) {dfg_id = 313 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %276 = "neura.data_mov"(%264) {dfg_id = 316 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %277 = "neura.add"(%275, %276) {dfg_id = 317 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %278 = "neura.data_mov"(%277) {dfg_id = 318 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %279 = "neura.data_mov"(%272) {dfg_id = 307 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 8009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 8009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 8009 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 8009 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%278, %279) {dfg_id = 319 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 27 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %280 = "neura.data_mov"(%247) {dfg_id = 244 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %281 = "neura.add"(%280) {dfg_id = 253 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %282 = "neura.data_mov"(%244) {dfg_id = 243 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %283 = "neura.add"(%282) {dfg_id = 252 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %284 = "neura.data_mov"(%283) {dfg_id = 262 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 162 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 162 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %285 = "neura.data_mov"(%241) {dfg_id = 143 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %286 = "neura.icmp"(%284, %285) <{cmpType = "eq"}> {dfg_id = 271 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %287 = "neura.data_mov"(%286) {dfg_id = 280 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %288 = "neura.not"(%287) {dfg_id = 288 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %289 = "neura.data_mov"(%281) {dfg_id = 263 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 1003 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 1003 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 1003 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 1003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 1003 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 1003 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 1003 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 1003 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %290 = "neura.data_mov"(%288) {dfg_id = 294 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 29 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 15 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %291 = neura.grant_predicate %289, %290 {dfg_id = 300 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %291 -> %245 {dfg_id = 306 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}, {id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %292 = "neura.data_mov"(%283) {dfg_id = 261 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 290 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 290 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 290 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 290 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %293 = "neura.data_mov"(%288) {dfg_id = 293 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %294 = neura.grant_predicate %292, %293 {dfg_id = 299 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %294 -> %242 {dfg_id = 305 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 170 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 170 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}, {id = 170 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 28 : i32}, {id = 170 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 29 : i32}, {id = 170 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 30 : i32}, {id = 170 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %295 = "neura.data_mov"(%241) {dfg_id = 142 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 289 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 289 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 289 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %296 = "neura.data_mov"(%288) {dfg_id = 292 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %297 = neura.grant_predicate %295, %296 {dfg_id = 298 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %297 -> %239 {dfg_id = 304 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 15 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 1011 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 1011 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}, {id = 1011 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 28 : i32}, {id = 1011 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 29 : i32}, {id = 1011 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 30 : i32}, {id = 1011 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 31 : i32}, {id = 1011 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 32 : i32}, {id = 1011 : i32, index_per_ii = 3 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 33 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %298 = "neura.data_mov"(%286) {dfg_id = 278 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %299 = "neura.data_mov"(%286) {dfg_id = 279 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %300 = neura.grant_predicate %298, %299 {dfg_id = 287 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %301 = "neura.data_mov"(%21) {dfg_id = 37 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %302 = "neura.data_mov"(%227) {dfg_id = 83 : i32, mapping_locs = [{id = 4009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 4009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %303 = "neura.data_mov"(%300) {dfg_id = 291 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %304 = "neura.phi"(%301, %302, %303) {dfg_id = 297 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %305 = "neura.data_mov"(%304) {dfg_id = 303 : i32, mapping_locs = [{id = 4009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 4009 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %305 : !neura.data {dfg_id = 310 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 1 : i32}]} +// MAPPING-NEXT: neura.yield {dfg_id = 10 : i32} +// MAPPING-NEXT: } +// MAPPING-NEXT: } // YAML: columns: 4 // YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 14 +// YAML-NEXT: compiled_ii: 15 // YAML-NEXT: cores: // YAML-NEXT: - column: 0 // YAML-NEXT: row: 0 @@ -334,202 +357,32 @@ // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SGT" -// YAML-NEXT: id: 14 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 18 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 93 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$9" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 24 -// YAML-NEXT: time_step: 18 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 235 +// YAML-NEXT: time_step: 15 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 39 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$16" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 54 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 30 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "AND" -// YAML-NEXT: id: 66 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#2147483644" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 227 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 51 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 80 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$9" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 44 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$16" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 116 -// YAML-NEXT: time_step: 15 +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 253 +// YAML-NEXT: time_step: 16 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg3" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "#1" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" @@ -555,7 +408,7 @@ // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" @@ -574,7 +427,7 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 5 // YAML-NEXT: operations: @@ -586,331 +439,579 @@ // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 6 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 232 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 54 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 266 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 274 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" + +// ASM: # Compiled II: 15 // ASM: PE(0,0): // ASM-NEXT: { -// ASM-NEXT: CONSTANT, [arg0] -> [$0] (t=0, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$8] -> [EAST, RED], [NORTH, RED], [$0] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0], [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [EAST, RED], [NORTH, RED], [$2] (t=2, inv_iters=0) +// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=2, inv_iters=0) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$9] -> [NORTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$0] (t=3, inv_iters=0) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: NOT, [$2] -> [NORTH, RED] (t=18, inv_iters=1) +// ASM-NEXT: ICMP_ULT, [$0], [#4] -> [NORTH, RED], [EAST, RED] (t=4, inv_iters=0) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: NOT, [EAST, RED] -> [$0], [NORTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=5, inv_iters=0) +// ASM-NEXT: ZEXT, [$0] -> [$8], [$0] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: AND, [$0], [#2147483644] -> [NORTH, RED] (t=7, inv_iters=0) +// ASM-NEXT: AND, [$0], [#2147483644] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [EAST, RED] (t=22, inv_iters=1) +// ASM-NEXT: PHI_START, [$0], [$9] -> [EAST, RED] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=10, inv_iters=0) +// ASM-NEXT: AND, [$8], [#3] -> [$0], [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [$0], [#0] -> [NORTH, RED], [$0] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$9] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: NOT, [$0] -> [$0], [EAST, RED] (t=11, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=26, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [NORTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$9] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) // ASM: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [NORTH, RED] -> [EAST, RED] (t=15, inv_iters=1) +// ASM-NEXT: CONSTANT, [arg0] -> [$0] (t=0, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0], [EAST, RED] (t=1, inv_iters=0) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: GRANT_ONCE, [$0] -> [WEST, RED], [NORTH, RED], [$16] (t=2, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$3] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: DATA_MOV, [$16] -> [EAST, RED] (t=3, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$2], [$10] -> [$0] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: ICMP_ULT, [$0], [#4] -> [NORTH, RED], [WEST, RED] (t=4, inv_iters=0) +// ASM-NEXT: PHI_START, [$0], [$11] -> [NORTH, RED] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [$0], [WEST, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$9] (t=5, inv_iters=0) +// ASM-NEXT: LOAD, [NORTH, RED] -> [$16] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: LOAD, [EAST, RED] -> [EAST, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=6, inv_iters=0) +// ASM-NEXT: LOAD, [$0] -> [WEST, RED] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$1] -> [EAST, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=21, inv_iters=1) +// ASM-NEXT: MUL, [EAST, RED], [$16] -> [WEST, RED] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$8] -> [EAST, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: AND, [$0], [#3] -> [$0], [WEST, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=9, inv_iters=0) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#0] -> [$8], [$0] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [EAST, RED] (t=24, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$2] (t=10, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$3], [NORTH, RED] -> [WEST, RED] (t=25, inv_iters=1) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [NORTH, RED], [WEST, RED] (t=11, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$11] (t=26, inv_iters=1) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: STORE, [EAST, RED], [$1] (t=26, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [WEST, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$10] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: OR, [$8], [#1] -> [EAST, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$1], [$9] -> [NORTH, RED] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) // ASM: PE(2,0): // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: GEP, [arg3], [$0] -> [EAST, RED] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$0] -> [NORTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=16, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=2, inv_iters=0) +// ASM-NEXT: LOAD, [$0] -> [NORTH, RED] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: GEP, [arg1], [$8] -> [EAST, RED] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: SEXT, [$0] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: GEP, [arg1], [$0] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg4], [$0] -> [WEST, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [NORTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$16] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=20, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [WEST, RED] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$8] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=21, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [$8] (t=22, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=22, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$0] (t=22, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$9] (t=22, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: MUL, [$8], [$16] -> [$8] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [$9] -> [EAST, RED] (t=24, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=24, inv_iters=1) +// ASM-NEXT: ADD, [$8], [NORTH, RED] -> [$0] (t=25, inv_iters=1) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [$8] -> [WEST, RED] (t=25, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=25, inv_iters=1) +// ASM-NEXT: STORE, [$0], [$9] (t=26, inv_iters=1) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: STORE, [NORTH, RED], [$0] (t=26, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: GEP, [arg2], [WEST, RED] -> [EAST, RED] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) // ASM: PE(3,0): // ASM-NEXT: { -// ASM-NEXT: STORE, [NORTH, RED], [$1] (t=29, inv_iters=2) +// ASM-NEXT: LOAD, [WEST, RED] -> [NORTH, RED] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [WEST, RED] -> [NORTH, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: LOAD, [WEST, RED] -> [NORTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: NOT, [$0] -> [$0] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: GRANT_ONCE, [$0] -> [NORTH, RED] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: NOT, [$1] -> [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: SEXT, [$0] -> [$0] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=5, inv_iters=0) +// ASM-NEXT: LOAD, [$1] -> [$16] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg5], [$0] -> [$9] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=20, inv_iters=1) +// ASM-NEXT: LOAD, [$8] -> [WEST, RED] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$8] -> [$0] (t=21, inv_iters=1) +// ASM-NEXT: LOAD, [$9] -> [$2] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: MUL, [WEST, RED], [$0] -> [NORTH, RED] (t=22, inv_iters=1) +// ASM-NEXT: MUL, [$2], [$16] -> [$2] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$1] -> [NORTH, RED] (t=23, inv_iters=1) +// ASM-NEXT: ADD, [WEST, RED], [$2] -> [$2] (t=24, inv_iters=1) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: LOAD, [$9] -> [$0] (t=24, inv_iters=1) +// ASM-NEXT: STORE, [$2], [$8] (t=25, inv_iters=1) // ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [WEST, RED] -> [$0] (t=25, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$9] (t=26, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=12) // ASM: PE(0,1): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$8] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=14, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [$1] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: PHI, [$0], [$8] -> [EAST, RED] (t=15, inv_iters=1) +// ASM-NEXT: GEP, [arg2], [SOUTH, RED] -> [NORTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$4] (t=2, inv_iters=0) +// ASM-NEXT: GEP, [arg3], [$0] -> [$0] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: NOT, [$4] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: SEXT, [$1] -> [NORTH, RED] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$9] -> [EAST, RED] (t=18, inv_iters=1) +// ASM-NEXT: LOAD, [$0] -> [NORTH, RED] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$0], [SOUTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$9] (t=19, inv_iters=1) +// ASM-NEXT: NOT, [SOUTH, RED] -> [SOUTH, RED], [$0] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=5, inv_iters=0) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [$2], [EAST, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=6, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=6, inv_iters=0) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$9] -> [EAST, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=21, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$2], [$2] -> [$9] (t=22, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [EAST, RED], [$1] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=22, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$1] -> [$16] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=23, inv_iters=1) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$3] (t=9, inv_iters=0) -// ASM-NEXT: LOAD, [$9] -> [EAST, RED] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=9, inv_iters=0) +// ASM-NEXT: PHI, [$1], [$9], [$16] -> [$9] (t=24, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=24, inv_iters=1) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=10, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$16] (t=24, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=10, inv_iters=0) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [EAST, RED] -> [$1] (t=11, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$9] (t=25, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$2] (t=11, inv_iters=0) +// ASM-NEXT: RETURN_VOID, [$9] (t=26, inv_iters=1) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$2], [$16] -> [EAST, RED], [$0] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: OR, [$3], [#2] -> [EAST, RED], [NORTH, RED] (t=13, inv_iters=0) +// ASM-NEXT: PHI, [$0], [EAST, RED] -> [SOUTH, RED] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg2], [$1] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) // ASM: PE(1,1): // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$9] -> [$9], [EAST, RED], [$1] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=14, inv_iters=1) +// ASM-NEXT: PHI, [SOUTH, RED], [$0] -> [$0] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: ADD, [$1], [#1] -> [NORTH, RED] (t=15, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [$0] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$8] -> [$1] (t=16, inv_iters=1) +// ASM-NEXT: PHI_START, [$0], [$10] -> [$0] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$16] -> [NORTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=3, inv_iters=0) +// ASM-NEXT: ADD, [$0], [#1] -> [$2], [NORTH, RED] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=18, inv_iters=1) +// ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=19, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=5, inv_iters=0) -// ASM-NEXT: GEP, [arg1], [$9] -> [SOUTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=19, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED], [SOUTH, RED] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=20, inv_iters=1) // ASM-NEXT: } (idx_per_ii=5) // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$1] -> [WEST, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: ICMP_EQ, [$2], [$8] -> [NORTH, RED], [WEST, RED] (t=21, inv_iters=1) // ASM-NEXT: } (idx_per_ii=6) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: PHI_START, [WEST, RED], [$1] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=7, inv_iters=0) // ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=22, inv_iters=1) // ASM-NEXT: } (idx_per_ii=7) // ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [NORTH, RED], [EAST, RED], [WEST, RED] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=22, inv_iters=1) +// ASM-NEXT: PHI_START, [$0], [NORTH, RED] -> [EAST, RED], [WEST, RED], [NORTH, RED], [SOUTH, RED], [$9], [$0] (t=8, inv_iters=0) // ASM-NEXT: } (idx_per_ii=8) // ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [EAST, RED], [WEST, RED] -> [$0], [NORTH, RED], [WEST, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=23, inv_iters=1) +// ASM-NEXT: ADD, [$0], [#4] -> [EAST, RED], [$8] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=24, inv_iters=1) // ASM-NEXT: } (idx_per_ii=9) // ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0], [WEST, RED], [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=24, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$9] (t=24, inv_iters=1) +// ASM-NEXT: ICMP_EQ, [$0], [SOUTH, RED] -> [$0] (t=10, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [SOUTH, RED] (t=25, inv_iters=1) // ASM-NEXT: } (idx_per_ii=10) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=11, inv_iters=0) -// ASM-NEXT: DATA_MOV, [$0] -> [EAST, RED] (t=11, inv_iters=0) +// ASM-NEXT: NOT, [$0] -> [EAST, RED], [SOUTH, RED], [NORTH, RED] (t=11, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$10] (t=26, inv_iters=1) // ASM-NEXT: } (idx_per_ii=11) // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=12, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$16] (t=26, inv_iters=1) +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [WEST, RED] (t=12, inv_iters=0) // ASM-NEXT: } (idx_per_ii=12) // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$1] -> [$1] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=13, inv_iters=0) +// ASM-NEXT: OR, [$9], [#3] -> [NORTH, RED], [EAST, RED] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=13, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$16] (t=13, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$1] (t=13, inv_iters=0) // ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) // ASM: PE(2,1): // ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [$0] -> [SOUTH, RED] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=14, inv_iters=1) +// ASM-NEXT: GEP, [arg3], [$0] -> [SOUTH, RED] (t=15, inv_iters=1) // ASM-NEXT: } (idx_per_ii=0) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [WEST, RED] -> [$8] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: SEXT, [SOUTH, RED] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: SEXT, [SOUTH, RED] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg5], [$0] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [$0] -> [SOUTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: ADD, [WEST, RED], [#4] -> [WEST, RED], [$0] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=23, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: MUL, [$8], [NORTH, RED] -> [SOUTH, RED] (t=24, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [WEST, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg2], [WEST, RED] -> [SOUTH, RED] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM: PE(3,1): +// ASM-NEXT: { +// ASM-NEXT: SEXT, [SOUTH, RED] -> [NORTH, RED] (t=16, inv_iters=1) // ASM-NEXT: } (idx_per_ii=1) // ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [$0] -> [EAST, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$8] -> [SOUTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: SEXT, [SOUTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) // ASM-NEXT: } (idx_per_ii=2) // ASM-NEXT: { -// ASM-NEXT: SEXT, [SOUTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: GEP, [arg4], [WEST, RED] -> [SOUTH, RED] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [WEST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM: PE(0,2): +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg3], [$0] -> [$8] (t=15, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=16, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=16, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [SOUTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$8] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: SEXT, [$0] -> [EAST, RED] (t=19, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg4], [$0] -> [NORTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: SEXT, [$0] -> [$0] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg5], [$0] -> [NORTH, RED], [$9] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$8] -> [$8] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=23, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: MUL, [$0], [SOUTH, RED] -> [NORTH, RED] (t=24, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$8], [SOUTH, RED] -> [$0] (t=25, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [$16] (t=26, inv_iters=1) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=26, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [$9] (t=27, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM: PE(1,2): +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg3], [$1] -> [WEST, RED] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: SEXT, [WEST, RED] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg1], [$0] -> [SOUTH, RED] (t=18, inv_iters=1) // ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$2] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg5], [WEST, RED] -> [WEST, RED] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$3], [$8] -> [$9] (t=21, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: NOT, [SOUTH, RED] -> [$0], [$8] (t=22, inv_iters=1) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [SOUTH, RED] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: MUL, [NORTH, RED], [EAST, RED] -> [NORTH, RED] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [$0] -> [SOUTH, RED] (t=23, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=9, inv_iters=0) +// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [SOUTH, RED] (t=24, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$2], [$8] -> [SOUTH, RED] (t=25, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$9] -> [$3], [SOUTH, RED] (t=12, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: OR, [$1], [#2] -> [$0], [WEST, RED] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg2], [$0] -> [WEST, RED] (t=14, inv_iters=0) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM: PE(2,2): +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg1], [$0] -> [SOUTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg4], [WEST, RED] -> [SOUTH, RED] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [WEST, RED] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=23, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM: PE(3,2): +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg4], [SOUTH, RED] -> [SOUTH, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg5], [SOUTH, RED] -> [WEST, RED], [SOUTH, RED] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(0,3): +// ASM-NEXT: { +// ASM-NEXT: LOAD, [SOUTH, RED] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: SEXT, [SOUTH, RED] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg4], [$0] -> [$0] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$8] -> [EAST, RED] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=20, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [SOUTH, RED] -> [EAST, RED] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$0] -> [SOUTH, RED] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$1] -> [EAST, RED] (t=23, inv_iters=1) +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=23, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [$0] -> [$0] (t=24, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [SOUTH, RED] -> [SOUTH, RED] (t=25, inv_iters=1) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=25, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [$8] (t=26, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=11) +// ASM: PE(1,3): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg1], [$0] -> [WEST, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: SEXT, [WEST, RED] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg5], [$0] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: ADD, [WEST, RED], [SOUTH, RED] -> [WEST, RED] (t=24, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(2,3): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=7) diff --git a/test/multi-cgra/kernel_mapping/relu/relu.mlir b/test/multi-cgra/kernel_mapping/relu/relu.mlir index 595e53e8..a52c7e44 100644 --- a/test/multi-cgra/kernel_mapping/relu/relu.mlir +++ b/test/multi-cgra/kernel_mapping/relu/relu.mlir @@ -231,8 +231,7 @@ module attributes {} { // DATAFLOW-NEXT: } // DATAFLOW-NEXT: } -// MAPPED: module { -// MAPPED-NEXT: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { +// MAPPED: func.func @_Z6kernelPiS_(%arg0: memref, %arg1: memref) attributes {llvm.linkage = #llvm.linkage} { // MAPPED-NEXT: %c0_i32 = arith.constant 0 : i32 // MAPPED-NEXT: %dependency_read_out:2, %dependency_write_out = taskflow.task @Task_0 dependency_read_in(%arg0, %arg1 : memref, memref) dependency_write_in(%arg1 : memref) value_inputs(%c0_i32 : i32) [original_read_memrefs(%arg0, %arg1 : memref, memref), original_write_memrefs(%arg1 : memref)] : (memref, memref, memref, i32) -> (memref, memref, memref) { // MAPPED-NEXT: ^bb0(%arg2: memref, %arg3: memref, %arg4: memref, %arg5: i32): @@ -249,14 +248,14 @@ module attributes {} { // MAPPED-NEXT: %8 = neura.grant_predicate %6, %7 {dfg_id = 11 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data // MAPPED-NEXT: %9 = "neura.data_mov"(%5) {dfg_id = 8 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %10 = "neura.not"(%9) {dfg_id = 10 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %11 = "neura.data_mov"(%1) {dfg_id = 4 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 128 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}, {id = 128 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 128 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 12 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 16 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPED-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 20 : i32, mapping_locs = [{id = 129 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %11 = "neura.data_mov"(%1) {dfg_id = 4 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 11 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 12 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 16 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPED-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 20 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %15 = neura.load_indexed [%14 : !neura.data] {dfg_id = 23 : i32, lhs_value = "%input2", mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -// MAPPED-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 25 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: %17 = "neura.data_mov"(%13) {dfg_id = 19 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}, {id = 256 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPED-NEXT: neura.store_indexed %16 to [%17 : !neura.data] {dfg_id = 27 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 2 : i32}], rhs_value = "%input2"} : !neura.data +// MAPPED-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 25 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 5 : i32}, {id = 256 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: %17 = "neura.data_mov"(%13) {dfg_id = 19 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "link", time_step = 4 : i32}, {id = 128 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 3 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPED-NEXT: neura.store_indexed %16 to [%17 : !neura.data] {dfg_id = 27 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 3 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 2 : i32}], rhs_value = "%input2"} : !neura.data // MAPPED-NEXT: %18 = "neura.data_mov"(%8) {dfg_id = 15 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 3 : i32}, {id = 64 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data // MAPPED-NEXT: %19 = neura.load_indexed [%18 : !neura.data] {dfg_id = 18 : i32, lhs_value = "%input0", mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data // MAPPED-NEXT: %20 = "neura.data_mov"(%8) {dfg_id = 14 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data @@ -273,4 +272,4 @@ module attributes {} { // MAPPED-NEXT: } // MAPPED-NEXT: return // MAPPED-NEXT: } -// MAPPED-NEXT: } +// MAPPED-NEXT: } \ No newline at end of file diff --git a/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir b/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir index 9aa6219e..968031f0 100644 --- a/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir +++ b/test/multi-cgra/taskflow/resnet/simple_resnet_tosa.mlir @@ -755,7 +755,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // RESOPT-NEXT: %11 = taskflow.counter parent(%10 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index // RESOPT-NEXT: taskflow.yield reads(%arg1 : memref<1x64x8x8xf32>) writes(%arg2, %arg3, %arg4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) // RESOPT-NEXT: } -// RESOPT-NEXT: %dependency_read_out_5:2, %dependency_write_out_6 = taskflow.task @Task_3 dependency_read_in(%dependency_write_out#0, %dependency_write_out#2 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) dependency_write_in(%dependency_write_out#2 : memref<1x8x8x64xf32>) value_inputs(%cst_0 : f32) [original_read_memrefs(%alloc_3, %alloc_4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>), original_write_memrefs(%alloc_4 : memref<1x8x8x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 6 : i32, tile_shape = "1x2", trip_count = 2359296 : i32} : (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { +// RESOPT-NEXT: %dependency_read_out_5:2, %dependency_write_out_6 = taskflow.task @Task_3 dependency_read_in(%dependency_write_out#0, %dependency_write_out#2 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) dependency_write_in(%dependency_write_out#2 : memref<1x8x8x64xf32>) value_inputs(%cst_0 : f32) [original_read_memrefs(%alloc_3, %alloc_4 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>), original_write_memrefs(%alloc_4 : memref<1x8x8x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 4 : i32, steps = 6 : i32, tile_shape = "1x2", trip_count = 2359296 : i32} : (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { // RESOPT-NEXT: ^bb0(%arg1: memref<1x10x10x64xf32>, %arg2: memref<1x8x8x64xf32>, %arg3: memref<1x8x8x64xf32>, %arg4: f32): // RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index // RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index @@ -787,7 +787,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // RESOPT-NEXT: %alloc_7 = memref.alloc() {alignment = 64 : i64} : memref<1x64x8x8xf32> // RESOPT-NEXT: %alloc_8 = memref.alloc() {alignment = 64 : i64} : memref<1x8x8x64xf32> // RESOPT-NEXT: %alloc_9 = memref.alloc() {alignment = 64 : i64} : memref<1x10x10x64xf32> -// RESOPT-NEXT: %dependency_read_out_10, %dependency_write_out_11:2 = taskflow.task @Task_4_Task_5_fused_Task_7_utilfused dependency_read_in(%dependency_write_out_6 : memref<1x8x8x64xf32>) dependency_write_in(%alloc_7, %alloc_9 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) value_inputs(%cst_1, %cst_2 : f32, f32) [original_read_memrefs(%alloc_4 : memref<1x8x8x64xf32>), original_write_memrefs(%alloc_7, %alloc_9 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 7 : i32, tile_shape = "1x2", trip_count = 6400 : i32} : (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>, f32, f32) -> (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) { +// RESOPT-NEXT: %dependency_read_out_10, %dependency_write_out_11:2 = taskflow.task @Task_4_Task_5_fused_Task_7_utilfused dependency_read_in(%dependency_write_out_6 : memref<1x8x8x64xf32>) dependency_write_in(%alloc_7, %alloc_9 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) value_inputs(%cst_1, %cst_2 : f32, f32) [original_read_memrefs(%alloc_4 : memref<1x8x8x64xf32>), original_write_memrefs(%alloc_7, %alloc_9 : memref<1x64x8x8xf32>, memref<1x10x10x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 4 : i32, steps = 7 : i32, tile_shape = "1x2", trip_count = 6400 : i32} : (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>, f32, f32) -> (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x10x10x64xf32>) { // RESOPT-NEXT: ^bb0(%arg1: memref<1x8x8x64xf32>, %arg2: memref<1x64x8x8xf32>, %arg3: memref<1x10x10x64xf32>, %arg4: f32, %arg5: f32): // RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index // RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index @@ -850,7 +850,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // RESOPT-NEXT: %7 = taskflow.counter parent(%6 : index) attributes {counter_id = 3 : i32, counter_type = "leaf", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index // RESOPT-NEXT: taskflow.yield reads(%arg1 : memref<1x64x8x8xf32>) writes(%arg2, %arg3 : memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) // RESOPT-NEXT: } -// RESOPT-NEXT: %dependency_read_out_15:2, %dependency_write_out_16 = taskflow.task @Task_9 dependency_read_in(%dependency_write_out_11#1, %dependency_write_out_14#1 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) dependency_write_in(%dependency_write_out_14#1 : memref<1x8x8x64xf32>) value_inputs(%cst : f32) [original_read_memrefs(%alloc_9, %alloc_12 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>), original_write_memrefs(%alloc_12 : memref<1x8x8x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 2 : i32, steps = 6 : i32, tile_shape = "1x2", trip_count = 2359296 : i32} : (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { +// RESOPT-NEXT: %dependency_read_out_15:2, %dependency_write_out_16 = taskflow.task @Task_9 dependency_read_in(%dependency_write_out_11#1, %dependency_write_out_14#1 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) dependency_write_in(%dependency_write_out_14#1 : memref<1x8x8x64xf32>) value_inputs(%cst : f32) [original_read_memrefs(%alloc_9, %alloc_12 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>), original_write_memrefs(%alloc_12 : memref<1x8x8x64xf32>)] {cgra_count = 2 : i32, compiled_ii = 4 : i32, steps = 6 : i32, tile_shape = "1x2", trip_count = 2359296 : i32} : (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>, f32) -> (memref<1x10x10x64xf32>, memref<1x8x8x64xf32>, memref<1x8x8x64xf32>) { // RESOPT-NEXT: ^bb0(%arg1: memref<1x10x10x64xf32>, %arg2: memref<1x8x8x64xf32>, %arg3: memref<1x8x8x64xf32>, %arg4: f32): // RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index // RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 8 : index} : index @@ -880,7 +880,7 @@ module attributes {torch.debug_module_name = "SimpleResNetBlock"} { // RESOPT-NEXT: taskflow.yield reads(%arg1, %arg3 : memref<1x10x10x64xf32>, memref<1x8x8x64xf32>) writes(%arg3 : memref<1x8x8x64xf32>) // RESOPT-NEXT: } // RESOPT-NEXT: %alloc_17 = memref.alloc() {alignment = 64 : i64} : memref<1x64x8x8xf32> -// RESOPT-NEXT: %dependency_read_out_18:2, %dependency_write_out_19 = taskflow.task @Task_10_Task_11_Task_12_fused_fused dependency_read_in(%dependency_write_out_16, %dependency_read_out : memref<1x8x8x64xf32>, memref<1x64x8x8xf32>) dependency_write_in(%alloc_17 : memref<1x64x8x8xf32>) value_inputs(%cst_1, %cst_2 : f32, f32) [original_read_memrefs(%alloc_12, %arg0 : memref<1x8x8x64xf32>, memref<1x64x8x8xf32>), original_write_memrefs(%alloc_17 : memref<1x64x8x8xf32>)] {cgra_count = 2 : i32, compiled_ii = 3 : i32, steps = 8 : i32, tile_shape = "1x2", trip_count = 4096 : i32} : (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x64x8x8xf32>, f32, f32) -> (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x64x8x8xf32>) { +// RESOPT-NEXT: %dependency_read_out_18:2, %dependency_write_out_19 = taskflow.task @Task_10_Task_11_Task_12_fused_fused dependency_read_in(%dependency_write_out_16, %dependency_read_out : memref<1x8x8x64xf32>, memref<1x64x8x8xf32>) dependency_write_in(%alloc_17 : memref<1x64x8x8xf32>) value_inputs(%cst_1, %cst_2 : f32, f32) [original_read_memrefs(%alloc_12, %arg0 : memref<1x8x8x64xf32>, memref<1x64x8x8xf32>), original_write_memrefs(%alloc_17 : memref<1x64x8x8xf32>)] {cgra_count = 2 : i32, compiled_ii = 7 : i32, steps = 8 : i32, tile_shape = "1x2", trip_count = 4096 : i32} : (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x64x8x8xf32>, f32, f32) -> (memref<1x8x8x64xf32>, memref<1x64x8x8xf32>, memref<1x64x8x8xf32>) { // RESOPT-NEXT: ^bb0(%arg1: memref<1x8x8x64xf32>, %arg2: memref<1x64x8x8xf32>, %arg3: memref<1x64x8x8xf32>, %arg4: f32, %arg5: f32): // RESOPT-NEXT: %0 = taskflow.counter attributes {counter_id = 0 : i32, counter_type = "root", lower_bound = 0 : index, step = 1 : index, upper_bound = 1 : index} : index // RESOPT-NEXT: %1 = taskflow.counter parent(%0 : index) attributes {counter_id = 1 : i32, counter_type = "relay", lower_bound = 0 : index, step = 1 : index, upper_bound = 64 : index} : index diff --git a/update_test_checks.py b/update_test_checks.py new file mode 100644 index 00000000..ae223e08 --- /dev/null +++ b/update_test_checks.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python3 +""" +Regenerates CHECK lines for failing tests from actual output files. + +Usage: + python3 update_test_checks.py [--max-lines N] + python3 update_test_checks.py --asm + +For YAML/MAPPING: generates // PREFIX: first_line then // PREFIX-NEXT: rest +For ASM (--asm): groups by PE blocks, each PE starts with // PREFIX: then -NEXT +""" + +import sys +import os +import re + + +def replace_check_lines(test_file, prefix, new_lines): + """Replace all CHECK lines with the given prefix in the test file.""" + with open(test_file, 'r') as f: + content = f.read() + + lines = content.split('\n') + result = [] + inserted = False + + # Match lines like: // PREFIX:, // PREFIX-NEXT:, // PREFIX-NOT:, etc. + prefix_pattern = re.compile( + rf'^// {re.escape(prefix)}(-NEXT|-NOT|-DAG|-LABEL)?:\s*') + + i = 0 + while i < len(lines): + if prefix_pattern.match(lines[i]): + if not inserted: + # Insert new check lines here + for new_line in new_lines: + result.append(new_line) + inserted = True + # Skip old check line + i += 1 + continue + result.append(lines[i]) + i += 1 + + with open(test_file, 'w') as f: + f.write('\n'.join(result)) + + +def generate_checks(output_text, prefix, max_lines=None, skip_lines=0): + """Generate CHECK lines from output. First non-empty line uses PREFIX:, + rest use PREFIX-NEXT:. Empty lines are skipped. + skip_lines: number of non-empty lines to skip from the start.""" + lines = output_text.strip().split('\n') + check_lines = [] + first = True + skipped = 0 + for line in lines: + if not line.strip(): + continue + if skipped < skip_lines: + skipped += 1 + continue + if max_lines and len(check_lines) >= max_lines: + break + if first: + check_lines.append(f'// {prefix}: {line.rstrip()}') + first = False + else: + check_lines.append(f'// {prefix}-NEXT: {line.rstrip()}') + return check_lines + + +def generate_asm_checks(output_text, prefix): + """Generate ASM CHECK lines. Each PE(...) block starts with // PREFIX:, + followed by // PREFIX-NEXT: lines. Empty lines are skipped. + The first line (e.g. '# Compiled II: N') also starts a block.""" + lines = output_text.strip().split('\n') + check_lines = [] + # First non-empty line starts with PREFIX: + # PE(...): lines start new blocks with PREFIX: + pe_pattern = re.compile(r'^PE\(') + first_line = True + + for line in lines: + stripped = line.rstrip() + if not stripped: + continue + if first_line: + check_lines.append(f'// {prefix}: {stripped}') + first_line = False + elif pe_pattern.match(stripped): + check_lines.append(f'// {prefix}: {stripped}') + else: + check_lines.append(f'// {prefix}-NEXT: {stripped}') + return check_lines + + +if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser() + parser.add_argument('test_file') + parser.add_argument('prefix') + parser.add_argument('output_file') + parser.add_argument('--max-lines', type=int, default=None) + parser.add_argument('--skip-lines', type=int, default=0) + parser.add_argument('--asm', action='store_true') + args = parser.parse_args() + + with open(args.output_file, 'r') as f: + actual_output = f.read() + + if args.asm: + new_checks = generate_asm_checks(actual_output, args.prefix) + else: + new_checks = generate_checks(actual_output, args.prefix, + args.max_lines, args.skip_lines) + + replace_check_lines(args.test_file, args.prefix, new_checks) + print(f"Updated {len(new_checks)} CHECK lines for prefix " + f"{args.prefix} in {args.test_file}") From 228105e49e4911814b68209c6eb05576ff198a74 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Wed, 25 Mar 2026 23:24:25 +0800 Subject: [PATCH 16/26] Refactor MappingState and mapping_util for improved clarity and consistency --- include/NeuraDialect/Mapping/MappingState.h | 3 +- include/NeuraDialect/Mapping/mapping_util.h | 9 ++ lib/NeuraDialect/Mapping/MappingState.cpp | 6 +- lib/NeuraDialect/Mapping/mapping_util.cpp | 121 ++++++++++---------- test/benchmark/Zeonica_Testbench | 2 +- 5 files changed, 75 insertions(+), 66 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index 5fe23d22..117290e0 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -84,8 +84,7 @@ class MappingState { // Note that the check is performed in II granularity. // For example, if II is 4, and we want to check (tile 2, step 5), then // it will check (tile 2, step 1), (tile 2, step 5), (tile 2, step 9), etc. - bool isAvailableAcrossTime(const MappingLoc &loc, - Operation *op = nullptr) const; + bool isAvailableAcrossTime(const MappingLoc &loc) const; // Checks if a location is available for a specific occupy status. // This implements the pipeline-aware availability checking: diff --git a/include/NeuraDialect/Mapping/mapping_util.h b/include/NeuraDialect/Mapping/mapping_util.h index 2465a8e0..e4f0fcfe 100644 --- a/include/NeuraDialect/Mapping/mapping_util.h +++ b/include/NeuraDialect/Mapping/mapping_util.h @@ -113,6 +113,15 @@ bool canReachLocInTime(const std::vector &producers, // Gets an available register (for the given time range) in the given tile. // The end_time is exclusive, meaning the register should be available // until end_time - 1. Returns nullptr if no available register found. +// +// The optional `op` parameter is the DataMovOp being routed. It is forwarded +// to MappingState::isAvailableAcrossTime() / isAvailableForOccupyStatus() so +// that multiple DataMovOps carrying the same materialized source value can +// share a single physical register. When `op` is non-null the availability +// check recognises that two DataMovOps reading the identical value do not +// actually conflict, because the single register read port broadcasts the +// value to all consumers. Passing nullptr disables this sharing and falls +// back to the strict one-occupant-per-register rule. Register *getAvailableRegister(const MappingState &mapping_state, Tile *tile, int start_time, int exclusive_end_time, Operation *op = nullptr); diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index 5a812622..e53a1a27 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -662,14 +662,14 @@ void MappingState::reserveRoute(Operation *op, ArrayRef path) { loc_to_op[loc] = op; // Use SINGLE_OCCUPY for route reservations (links/registers). occupied_locs[loc].push_back({SINGLE_OCCUPY, op}); - // Maintain register cluster occupancy records. + // Maintains register cluster occupancy records. if (loc.resource->getKind() == ResourceKind::Register) { Register *reg = static_cast(loc.resource); - // Record write at first occurrence of this register in the path + // Records write at first occurrence of this register in the path if (loc.time_step == resource_first_time[loc.resource]) { addWriteToRegFileRecord(reg, loc.time_step); } - // Record read at last occurrence of this register in the path + // Records read at last occurrence of this register in the path if (loc.time_step == resource_last_time[loc.resource]) { addReadToRegFileRecord(reg, loc.time_step); } diff --git a/lib/NeuraDialect/Mapping/mapping_util.cpp b/lib/NeuraDialect/Mapping/mapping_util.cpp index d3a95200..10e150c1 100644 --- a/lib/NeuraDialect/Mapping/mapping_util.cpp +++ b/lib/NeuraDialect/Mapping/mapping_util.cpp @@ -197,7 +197,7 @@ mlir::neura::collectRecurrenceCycles(Region ®ion) { region.walk([&](neura::CtrlMovOp ctrl_mov_op) { Value target = ctrl_mov_op.getTarget(); - auto reserve_op = target.getDefiningOp(); + neura::ReserveOp reserve_op = target.getDefiningOp(); if (!reserve_op) { return; } @@ -460,7 +460,8 @@ mlir::Operation *mlir::neura::getMaterializedBackwardUser(Operation *op) { assert(isa(target.getDefiningOp()) && "Expected the user of ctrl_mov target to be a reserve operation"); - auto reserve_op = dyn_cast(target.getDefiningOp()); + neura::ReserveOp reserve_op = + dyn_cast(target.getDefiningOp()); // Skip ctrl_mov users of reserve; return the first materialized user. for (Operation *user : reserve_op.getResult().getUsers()) { @@ -480,55 +481,6 @@ mlir::Operation *mlir::neura::getMaterializedBackwardUser(Operation *op) { "No materialized backward user (i.e., phi) found for ctrl_mov"); } -llvm::SmallVector -mlir::neura::getMaterializedUserOps(Operation *op) { - llvm::SmallVector result; - llvm::DenseSet visited; - visited.insert(op); - llvm::errs() << "Starting to collect materialized users for: " << *op << "\n"; - llvm::SmallVector worklist(op->getUsers().begin(), - op->getUsers().end()); - - while (!worklist.empty()) { - Operation *curr = worklist.pop_back_val(); - llvm::errs() << "Visiting operation: " << *curr << "\n"; - if (!visited.insert(curr).second) { - llvm::errs() << "Already visited, so skip: " << *curr << "\n"; - continue; - } - - if (isa(curr)) { - for (Operation *next : curr->getUsers()) { - if (visited.insert(next).second) { - // Only adds the next operation if it hasn't been visited yet. - worklist.push_back(next); - } - } - continue; - } - - // Specially handles the ctrl_mov, i.e., the second operand of ctrl_mov is - // treated as a target/destination/user in terms of dataflow. - if (auto ctrl_mov = dyn_cast(curr)) { - Value target = ctrl_mov.getTarget(); - for (Operation *user : target.getUsers()) { - if (visited.insert(user).second) { - worklist.push_back(user); - } - } - continue; - } - - // Materialized op - result.push_back(curr); - } - - for (Operation *res : result) { - llvm::errs() << "Materialized user: " << *res << "\n"; - } - return result; -} - // This struct represents a pending data_mov/ctrl_mov that is being routed, // along with its routing path. struct PendingRoute { @@ -595,6 +547,55 @@ bool hasSafeOperandIterationAtConsume( return true; } +llvm::SmallVector +mlir::neura::getMaterializedUserOps(Operation *op) { + llvm::SmallVector result; + llvm::DenseSet visited; + visited.insert(op); + llvm::errs() << "Starting to collect materialized users for: " << *op << "\n"; + llvm::SmallVector worklist(op->getUsers().begin(), + op->getUsers().end()); + + while (!worklist.empty()) { + Operation *curr = worklist.pop_back_val(); + llvm::errs() << "Visiting operation: " << *curr << "\n"; + if (!visited.insert(curr).second) { + llvm::errs() << "Already visited, so skip: " << *curr << "\n"; + continue; + } + + if (isa(curr)) { + for (Operation *next : curr->getUsers()) { + if (visited.insert(next).second) { + // Only adds the next operation if it hasn't been visited yet. + worklist.push_back(next); + } + } + continue; + } + + // Specially handles the ctrl_mov, i.e., the second operand of ctrl_mov is + // treated as a target/destination/user in terms of dataflow. + if (auto ctrl_mov = dyn_cast(curr)) { + Value target = ctrl_mov.getTarget(); + for (Operation *user : target.getUsers()) { + if (visited.insert(user).second) { + worklist.push_back(user); + } + } + continue; + } + + // Materialized op + result.push_back(curr); + } + + for (Operation *res : result) { + llvm::errs() << "Materialized user: " << *res << "\n"; + } + return result; +} + bool mlir::neura::tryRouteForwardMove(Operation *mov_op, MappingLoc src_loc, MappingLoc dst_loc, const MappingState &state, @@ -825,7 +826,7 @@ Operation *mlir::neura::getMaterializedProducer(Value operand) { assert( isa(producer) && "Expected a DataMovOp as operand producer for non-ReserveOp operations"); - auto mov_op = dyn_cast(producer); + neura::DataMovOp mov_op = dyn_cast(producer); Operation *materialized_producer = mov_op.getOperand().getDefiningOp(); return materialized_producer; } @@ -839,7 +840,7 @@ int mlir::neura::getPhysicalHops(const std::vector &producers, for (Operation *producer : producers) { // Get the last location of the producer. - const std::vector &producer_locs = + std::vector producer_locs = mapping_state.getAllLocsOfOp(producer); assert(!producer_locs.empty() && "No locations found for producer"); @@ -1004,7 +1005,7 @@ mlir::neura::calculateAward(Operation *op, std::set &critical_ops, // Assembles all the backward users if exist. std::vector backward_users; for (Operation *user : getCtrlMovUsers(op)) { - auto ctrl_mov = dyn_cast(user); + neura::CtrlMovOp ctrl_mov = dyn_cast(user); assert(ctrl_mov && "Expected user to be a CtrlMovOp"); mlir::Operation *materialized_backward_op = getMaterializedBackwardUser(ctrl_mov); @@ -1062,7 +1063,7 @@ mlir::neura::calculateAward(Operation *op, std::set &critical_ops, // Computes proximity bonus to backward users. Closer is better for // recurrence routing. - for (auto &backward_user_loc : backward_users_locs) { + for (MappingLoc &backward_user_loc : backward_users_locs) { Tile *backward_tile = dyn_cast(backward_user_loc.resource); if (backward_tile) { int backward_hops = std::abs(backward_tile->getX() - tile->getX()) + @@ -1092,7 +1093,7 @@ mlir::neura::calculateAward(Operation *op, std::set &critical_ops, producers.empty() || canReachLocInTime(producers, tile_loc_candidate, t, mapping_state); bool meet_backward_user_constraint = true; - for (auto &backward_user_loc : backward_users_locs) { + for (MappingLoc &backward_user_loc : backward_users_locs) { // Checks if the location can reach all backward users. if (!canReachLocInTime(tile_loc_candidate, backward_user_loc, backward_user_loc.time_step + @@ -1235,9 +1236,9 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, } if (bind_success) { + std::vector pending_operand_routes; std::vector routed_operands; std::vector routed_ctrl_movs; - std::vector pending_operand_routes; // Tries to route the data move operations. for (Value operand : op->getOperands()) { llvm::errs() << "Processing operand: " << operand << "\n"; @@ -1265,7 +1266,7 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, route_path)) { // Reserves the route for the data move operation. mapping_state.reserveRoute(data_move, route_path); - pending_operand_routes.push_back({data_move, route_path}); + pending_operand_routes.push_back({data_move, std::move(route_path)}); routed_operands.push_back(data_move); llvm::errs() << "[DEBUG] Successfully routed data move: " << *data_move << " from " << src_loc.resource->getType() << "#" @@ -1302,7 +1303,7 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, } // Checks whether the operation's user is a ctrl_mov. for (Operation *user : getCtrlMovUsers(op)) { - auto ctrl_mov = dyn_cast(user); + neura::CtrlMovOp ctrl_mov = dyn_cast(user); llvm::errs() << "[DEBUG] Found ctrl_mov user: " << *ctrl_mov << "\n"; assert(ctrl_mov && "Expected user to be a CtrlMovOp"); mlir::Operation *materialized_backward_op = @@ -1354,7 +1355,7 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, int mlir::neura::getOpLatency(Operation *op) { // Try to get the latency attribute from the operation - if (auto latency_attr = op->getAttrOfType("latency")) { + if (IntegerAttr latency_attr = op->getAttrOfType("latency")) { return latency_attr.getInt(); } // Default to single-cycle if no latency attribute is present diff --git a/test/benchmark/Zeonica_Testbench b/test/benchmark/Zeonica_Testbench index 1e98cf05..62389ec9 160000 --- a/test/benchmark/Zeonica_Testbench +++ b/test/benchmark/Zeonica_Testbench @@ -1 +1 @@ -Subproject commit 1e98cf05bf9c68299d48e0348cb1c6cbb7c8455e +Subproject commit 62389ec9f8e4e0f7f4988294213e71c6d2eebc85 From 82cf52f91ae9935d04cc766846ec58a95426bd43 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Wed, 25 Mar 2026 23:41:10 +0800 Subject: [PATCH 17/26] Enhance function signatures in MappingState and mapping_util for improved clarity and consistency --- include/NeuraDialect/Mapping/MappingState.h | 3 ++- lib/NeuraDialect/Mapping/mapping_util.cpp | 9 +++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index 117290e0..5fe23d22 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -84,7 +84,8 @@ class MappingState { // Note that the check is performed in II granularity. // For example, if II is 4, and we want to check (tile 2, step 5), then // it will check (tile 2, step 1), (tile 2, step 5), (tile 2, step 9), etc. - bool isAvailableAcrossTime(const MappingLoc &loc) const; + bool isAvailableAcrossTime(const MappingLoc &loc, + Operation *op = nullptr) const; // Checks if a location is available for a specific occupy status. // This implements the pipeline-aware availability checking: diff --git a/lib/NeuraDialect/Mapping/mapping_util.cpp b/lib/NeuraDialect/Mapping/mapping_util.cpp index 10e150c1..6a93d539 100644 --- a/lib/NeuraDialect/Mapping/mapping_util.cpp +++ b/lib/NeuraDialect/Mapping/mapping_util.cpp @@ -261,7 +261,7 @@ mlir::neura::getTopologicallySortedOps(Region ®ion) { std::deque ready_queue; // Collects recurrence cycle ops. - SmallVector recurrence_cycles = + SmallVector recurrence_cycles = collectRecurrenceCycles(region); llvm::DenseSet recurrence_ops; for (const RecurrenceCycle &cycle : recurrence_cycles) { @@ -576,7 +576,7 @@ mlir::neura::getMaterializedUserOps(Operation *op) { // Specially handles the ctrl_mov, i.e., the second operand of ctrl_mov is // treated as a target/destination/user in terms of dataflow. - if (auto ctrl_mov = dyn_cast(curr)) { + if (neura::CtrlMovOp ctrl_mov = dyn_cast(curr)) { Value target = ctrl_mov.getTarget(); for (Operation *user : target.getUsers()) { if (visited.insert(user).second) { @@ -860,7 +860,7 @@ bool mlir::neura::canReachLocInTime(const std::vector &producers, for (Operation *producer : producers) { // Get the last location of the producer. - const std::vector &producer_locs = + std::vector producer_locs = mapping_state.getAllLocsOfOp(producer); assert(!producer_locs.empty() && "No locations found for producer"); @@ -1264,7 +1264,6 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, std::vector route_path; if (tryRouteForwardMove(data_move, src_loc, target_loc, mapping_state, route_path)) { - // Reserves the route for the data move operation. mapping_state.reserveRoute(data_move, route_path); pending_operand_routes.push_back({data_move, std::move(route_path)}); routed_operands.push_back(data_move); @@ -1284,8 +1283,6 @@ bool mlir::neura::placeAndRoute(Operation *op, const MappingLoc &target_loc, << " @t=" << target_loc.time_step << "; so unschedule op\n"; mapping_state.unbindOp(op); for (Operation *routed_op : routed_operands) { - llvm::errs() << "[DEBUG] Releasing route for routed operand: " - << *routed_op << "\n"; mapping_state.releaseRoute(routed_op); } return false; From 103f4891ea2b06260ad1eb6140d9e71ff0c18342 Mon Sep 17 00:00:00 2001 From: Shiran GUO Date: Wed, 25 Mar 2026 10:43:35 -0500 Subject: [PATCH 18/26] Delete update_test_checks.py --- update_test_checks.py | 120 ------------------------------------------ 1 file changed, 120 deletions(-) delete mode 100644 update_test_checks.py diff --git a/update_test_checks.py b/update_test_checks.py deleted file mode 100644 index ae223e08..00000000 --- a/update_test_checks.py +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env python3 -""" -Regenerates CHECK lines for failing tests from actual output files. - -Usage: - python3 update_test_checks.py [--max-lines N] - python3 update_test_checks.py --asm - -For YAML/MAPPING: generates // PREFIX: first_line then // PREFIX-NEXT: rest -For ASM (--asm): groups by PE blocks, each PE starts with // PREFIX: then -NEXT -""" - -import sys -import os -import re - - -def replace_check_lines(test_file, prefix, new_lines): - """Replace all CHECK lines with the given prefix in the test file.""" - with open(test_file, 'r') as f: - content = f.read() - - lines = content.split('\n') - result = [] - inserted = False - - # Match lines like: // PREFIX:, // PREFIX-NEXT:, // PREFIX-NOT:, etc. - prefix_pattern = re.compile( - rf'^// {re.escape(prefix)}(-NEXT|-NOT|-DAG|-LABEL)?:\s*') - - i = 0 - while i < len(lines): - if prefix_pattern.match(lines[i]): - if not inserted: - # Insert new check lines here - for new_line in new_lines: - result.append(new_line) - inserted = True - # Skip old check line - i += 1 - continue - result.append(lines[i]) - i += 1 - - with open(test_file, 'w') as f: - f.write('\n'.join(result)) - - -def generate_checks(output_text, prefix, max_lines=None, skip_lines=0): - """Generate CHECK lines from output. First non-empty line uses PREFIX:, - rest use PREFIX-NEXT:. Empty lines are skipped. - skip_lines: number of non-empty lines to skip from the start.""" - lines = output_text.strip().split('\n') - check_lines = [] - first = True - skipped = 0 - for line in lines: - if not line.strip(): - continue - if skipped < skip_lines: - skipped += 1 - continue - if max_lines and len(check_lines) >= max_lines: - break - if first: - check_lines.append(f'// {prefix}: {line.rstrip()}') - first = False - else: - check_lines.append(f'// {prefix}-NEXT: {line.rstrip()}') - return check_lines - - -def generate_asm_checks(output_text, prefix): - """Generate ASM CHECK lines. Each PE(...) block starts with // PREFIX:, - followed by // PREFIX-NEXT: lines. Empty lines are skipped. - The first line (e.g. '# Compiled II: N') also starts a block.""" - lines = output_text.strip().split('\n') - check_lines = [] - # First non-empty line starts with PREFIX: - # PE(...): lines start new blocks with PREFIX: - pe_pattern = re.compile(r'^PE\(') - first_line = True - - for line in lines: - stripped = line.rstrip() - if not stripped: - continue - if first_line: - check_lines.append(f'// {prefix}: {stripped}') - first_line = False - elif pe_pattern.match(stripped): - check_lines.append(f'// {prefix}: {stripped}') - else: - check_lines.append(f'// {prefix}-NEXT: {stripped}') - return check_lines - - -if __name__ == '__main__': - import argparse - parser = argparse.ArgumentParser() - parser.add_argument('test_file') - parser.add_argument('prefix') - parser.add_argument('output_file') - parser.add_argument('--max-lines', type=int, default=None) - parser.add_argument('--skip-lines', type=int, default=0) - parser.add_argument('--asm', action='store_true') - args = parser.parse_args() - - with open(args.output_file, 'r') as f: - actual_output = f.read() - - if args.asm: - new_checks = generate_asm_checks(actual_output, args.prefix) - else: - new_checks = generate_checks(actual_output, args.prefix, - args.max_lines, args.skip_lines) - - replace_check_lines(args.test_file, args.prefix, new_checks) - print(f"Updated {len(new_checks)} CHECK lines for prefix " - f"{args.prefix} in {args.test_file}") From 411f39fb287960c6d6d3c9eb5e96ee5bcc5fa484 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Wed, 25 Mar 2026 23:46:53 +0800 Subject: [PATCH 19/26] Remove accidentally committed = file --- = | 66 -------------------------------- test/benchmark/Zeonica_Testbench | 2 +- 2 files changed, 1 insertion(+), 67 deletions(-) delete mode 100644 = diff --git a/= b/= deleted file mode 100644 index 1e4720c2..00000000 --- a/= +++ /dev/null @@ -1,66 +0,0 @@ -// This struct represents a pending data_mov/ctrl_mov that is being routed, -// along with its routing path. -struct PendingRoute { - Operation *mov_op; - std::vector path; -}; - -bool hasSafeOperandIterationAtConsume( - Operation *op, const std::vector &operand_routes, int ii) { - assert(ii > 0 && II should be positive); - - if (operand_routes.empty()) { - return true; - } - - for (const PendingRoute &route : operand_routes) { - // Records the time range that each register is occupied on this route. - // >, this means the register is occupied - // from min_time to max_time. - DenseMap> reg_time_range; - for (const MappingLoc &loc : route.path) { - Register *reg = dyn_cast(loc.resource); - continue; - } - - // For each register, tracks its live interval on this path by keeping - // the earliest and latest time it appears. - // Inserts a new entry if the register is seen for the first time. - auto [it, inserted] = reg_time_range.try_emplace( - reg, std::make_pair(loc.time_step, loc.time_step)); - - // If this register has been seen before, updates the time range to - // include the new time step. - // Updates the min_time for this seen register if the new time step is - // earlier. - it->second.first = std::min(it->second.first, loc.time_step); - // Updates the max_time for this seen register if the new time step is - // later. - it->second.second = std::max(it->second.second, loc.time_step); - } - } - - // Register occupancy is tracked in per-cycle slots (half-open in routing - // builders), so max_t - min_t + 1 corresponds to the hold duration. - for (const auto &entry : reg_time_range) { - Register *reg = entry.first; - int min_t = entry.second.first; - int max_t = entry.second.second; - int occupancy = max_t - min_t + 1; - if (occupancy > ii) { - llvm::errs() << [DEBUG] Reject schedule due to register hold next - iteration window. op= - << *op << , II= << ii << , reg=# << reg->getId() - << , hold_start= << min_t << , hold_end= << max_t - << , hold_len= << occupancy - << , mov_op= << *route.mov_op << n; - return false; - } - } - } - - return true; -} - - mapping_state.getII())) { - llvm::errs() << [DEBUG] Operand iteration shift at consume time diff --git a/test/benchmark/Zeonica_Testbench b/test/benchmark/Zeonica_Testbench index 62389ec9..1e98cf05 160000 --- a/test/benchmark/Zeonica_Testbench +++ b/test/benchmark/Zeonica_Testbench @@ -1 +1 @@ -Subproject commit 62389ec9f8e4e0f7f4988294213e71c6d2eebc85 +Subproject commit 1e98cf05bf9c68299d48e0348cb1c6cbb7c8455e From d9f44615d5a61c0160d3abd56c8ae2d9a718955b Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Wed, 25 Mar 2026 23:47:33 +0800 Subject: [PATCH 20/26] Update Zeonica_Testbench submodule to main branch --- test/benchmark/Zeonica_Testbench | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/benchmark/Zeonica_Testbench b/test/benchmark/Zeonica_Testbench index 1e98cf05..45e85e44 160000 --- a/test/benchmark/Zeonica_Testbench +++ b/test/benchmark/Zeonica_Testbench @@ -1 +1 @@ -Subproject commit 1e98cf05bf9c68299d48e0348cb1c6cbb7c8455e +Subproject commit 45e85e44d58670e08a88dfcebfd471909699ae2c From 2ccd34e2efe100ebc9ed6a7d4b92054ebb3b2388 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Thu, 26 Mar 2026 00:02:10 +0800 Subject: [PATCH 21/26] Sync Zeonica_Testbench submodule to match main branch (1e98cf0) --- test/benchmark/Zeonica_Testbench | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/benchmark/Zeonica_Testbench b/test/benchmark/Zeonica_Testbench index 45e85e44..1e98cf05 160000 --- a/test/benchmark/Zeonica_Testbench +++ b/test/benchmark/Zeonica_Testbench @@ -1 +1 @@ -Subproject commit 45e85e44d58670e08a88dfcebfd471909699ae2c +Subproject commit 1e98cf05bf9c68299d48e0348cb1c6cbb7c8455e From 872e3878fd338e40615b2effc39e1de43ec467a5 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Thu, 26 Mar 2026 06:09:46 +0800 Subject: [PATCH 22/26] Resolved merge conflicts --- include/NeuraDialect/Mapping/mapping_util.h | 6 +- test/code_gen/test_code_generate.mlir | 457 ------------ test/compiler_e2e/fir/fir_kernel.mlir | 188 +---- test/e2e/fir/fir_kernel.mlir | 109 +-- test/e2e/fir/fir_kernel_vec.mlir | 77 +- test/e2e/gemm/gemm_kernel.mlir | 467 ++++++------ test/e2e/gemv/gemv_kernel.mlir | 779 +------------------- test/e2e/spmv/spmv_kernel.mlir | 646 +--------------- test/neura/ctrl/branch_for.mlir | 29 +- 9 files changed, 283 insertions(+), 2475 deletions(-) diff --git a/include/NeuraDialect/Mapping/mapping_util.h b/include/NeuraDialect/Mapping/mapping_util.h index e4f0fcfe..0ae06cd7 100644 --- a/include/NeuraDialect/Mapping/mapping_util.h +++ b/include/NeuraDialect/Mapping/mapping_util.h @@ -114,13 +114,13 @@ bool canReachLocInTime(const std::vector &producers, // The end_time is exclusive, meaning the register should be available // until end_time - 1. Returns nullptr if no available register found. // -// The optional `op` parameter is the DataMovOp being routed. It is forwarded +// The optional `op` parameter is the DataMovOp being routed. It is forwarded // to MappingState::isAvailableAcrossTime() / isAvailableForOccupyStatus() so // that multiple DataMovOps carrying the same materialized source value can -// share a single physical register. When `op` is non-null the availability +// share a single physical register. When `op` is non-null the availability // check recognises that two DataMovOps reading the identical value do not // actually conflict, because the single register read port broadcasts the -// value to all consumers. Passing nullptr disables this sharing and falls +// value to all consumers. Passing nullptr disables this sharing and falls // back to the strict one-occupant-per-register rule. Register *getAvailableRegister(const MappingState &mapping_state, Tile *tile, int start_time, int exclusive_end_time, diff --git a/test/code_gen/test_code_generate.mlir b/test/code_gen/test_code_generate.mlir index 8a612539..6e27590a 100644 --- a/test/code_gen/test_code_generate.mlir +++ b/test/code_gen/test_code_generate.mlir @@ -115,72 +115,6 @@ func.func @loop_test() -> f32 { // YAML-NEXT: entries: // YAML-NEXT: - entry_id: "entry0" // YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 17 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 36 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 55 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 410000 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "CONSTANT" @@ -298,397 +232,6 @@ func.func @loop_test() -> f32 { // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "FADD" -// YAML-NEXT: id: 40 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 490001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 55 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 64 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VALUE" -// YAML-NEXT: id: 66 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 52 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 2 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 18 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 490000 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 28 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 430000 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 39 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 580001 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SLT" -// YAML-NEXT: id: 45 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 54 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 31 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 53 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 580000 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 34 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 440000 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 64 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 2 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VALUE" -// YAML-NEXT: id: 66 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 2 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 50 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 56 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 500000 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 3 -// YAML-NEXT: core_id: "12" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 4 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0.000000" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" // ASM: # Compiled II: 5 diff --git a/test/compiler_e2e/fir/fir_kernel.mlir b/test/compiler_e2e/fir/fir_kernel.mlir index 28f75f51..42a998c3 100644 --- a/test/compiler_e2e/fir/fir_kernel.mlir +++ b/test/compiler_e2e/fir/fir_kernel.mlir @@ -131,7 +131,7 @@ // YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 180000 +// YAML-NEXT: id: 180001 // YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: @@ -233,188 +233,4 @@ // YAML-NEXT: time_step: 2 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 100000 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD_INDEXED" -// YAML-NEXT: id: 15 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 280000 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 27 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 110000 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "RETURN_VALUE" -// YAML-NEXT: id: 33 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 190000 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 22 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 32 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 7 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 13 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#32" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 26 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 - +// YAML-NEXT: - operand: "$0" \ No newline at end of file diff --git a/test/e2e/fir/fir_kernel.mlir b/test/e2e/fir/fir_kernel.mlir index 4f91c496..5bf6f452 100644 --- a/test/e2e/fir/fir_kernel.mlir +++ b/test/e2e/fir/fir_kernel.mlir @@ -86,7 +86,7 @@ // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 310000 +// YAML-NEXT: id: 310001 // YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: @@ -249,7 +249,7 @@ // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 180000 +// YAML-NEXT: id: 180001 // YAML-NEXT: time_step: 3 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: @@ -267,111 +267,8 @@ // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 290001 +// YAML-NEXT: id: 290002 // YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 8 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 120000 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 290000 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 37 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 23 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 32 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" // ASM: # Compiled II: 5 diff --git a/test/e2e/fir/fir_kernel_vec.mlir b/test/e2e/fir/fir_kernel_vec.mlir index c79abe88..8c6595d1 100644 --- a/test/e2e/fir/fir_kernel_vec.mlir +++ b/test/e2e/fir/fir_kernel_vec.mlir @@ -86,7 +86,7 @@ // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 310000 +// YAML-NEXT: id: 310001 // YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: @@ -240,7 +240,7 @@ // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 180000 +// YAML-NEXT: id: 180001 // YAML-NEXT: time_step: 3 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: @@ -258,7 +258,7 @@ // YAML-NEXT: - index_per_ii: 1 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 290001 +// YAML-NEXT: id: 290002 // YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: @@ -301,77 +301,6 @@ // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 120000 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 290000 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 37 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 23 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "VECTOR.REDUCE.ADD" -// YAML-NEXT: id: 41 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 32 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" // ASM: # Compiled II: 5 diff --git a/test/e2e/gemm/gemm_kernel.mlir b/test/e2e/gemm/gemm_kernel.mlir index 98fecc41..9adeddf4 100644 --- a/test/e2e/gemm/gemm_kernel.mlir +++ b/test/e2e/gemm/gemm_kernel.mlir @@ -458,145 +458,6 @@ // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 16 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 53 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 72 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 188 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI" -// YAML-NEXT: id: 255 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 267 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 106 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 178 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 139 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 128 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$9" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 189 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 181 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" // // ASM: # Compiled II: 17 // ASM: PE(0,0): @@ -640,115 +501,259 @@ // ASM: PE(1,0): // CHAIN-YAML-LABEL: core_id: "5" -// CHAIN-YAML: - index_per_ii: 11 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "NOT" -// CHAIN-YAML: id: 159 -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "$3" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - operand: "$8" -// CHAIN-YAML: - index_per_ii: 12 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "DATA_MOV" -// CHAIN-YAML: id: 1790000 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "$8" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "$1" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - index_per_ii: 13 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "DATA_MOV" -// CHAIN-YAML: id: 1790001 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "$1" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "$0" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - index_per_ii: 14 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "GRANT_PREDICATE" -// CHAIN-YAML: id: 190 -// CHAIN-YAML: - opcode: "DATA_MOV" -// CHAIN-YAML: id: 1790002 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "$0" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "EAST" -// CHAIN-YAML: color: "RED" +// CHAIN-YAML - index_per_ii: 12 +// CHAIN-YAML: operations: +// CHAIN-YAML: - opcode: "GRANT_PREDICATE" +// CHAIN-YAML: id: 158 +// CHAIN-YAML: time_step: 12 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "$0" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - operand: "$8" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "$0" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - opcode: "DATA_MOV" +// CHAIN-YAML: id: 1790000 +// CHAIN-YAML: time_step: 12 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "$16" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "EAST" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - opcode: "DATA_MOV" +// CHAIN-YAML: id: 1780000 +// CHAIN-YAML: time_step: 12 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "$16" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "SOUTH" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - index_per_ii: 13 +// CHAIN-YAML: operations: +// CHAIN-YAML: - opcode: "ADD" +// CHAIN-YAML: id: 182 +// CHAIN-YAML: time_step: 13 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "$0" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - operand: "#1" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "NORTH" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - operand: "$1" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - index_per_ii: 14 +// CHAIN-YAML: operations: +// CHAIN-YAML: - opcode: "GRANT_PREDICATE" +// CHAIN-YAML: id: 190 +// CHAIN-YAML: time_step: 14 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "$9" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - operand: "$16" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "$8" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - opcode: "DATA_MOV" +// CHAIN-YAML: id: 167 +// CHAIN-YAML: time_step: 14 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "EAST" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "$0" +// CHAIN-YAML: color: "RED" // CHAIN-YAML-LABEL: core_id: "6" -// CHAIN-YAML: - index_per_ii: 6 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "GRANT_PREDICATE" -// CHAIN-YAML: id: 189 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "$7" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - operand: "$8" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - index_per_ii: 15 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "DATA_MOV" -// CHAIN-YAML: id: 179 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "WEST" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "$8" -// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - index_per_ii: 16 +// CHAIN-YAML: operations: +// CHAIN-YAML: - opcode: "PHI_START" +// CHAIN-YAML: id: 98 +// CHAIN-YAML: time_step: 16 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "$1" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - operand: "$11" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "EAST" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - operand: "$0" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - opcode: "DATA_MOV" +// CHAIN-YAML: id: 206 +// CHAIN-YAML: time_step: 16 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "NORTH" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "$9" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - column: 3 +// CHAIN-YAML: row: 1 +// CHAIN-YAML: core_id: "7" +// CHAIN-YAML: entries: +// CHAIN-YAML: - entry_id: "entry0" +// CHAIN-YAML: instructions: +// CHAIN-YAML: - index_per_ii: 0 +// CHAIN-YAML: operations: +// CHAIN-YAML: - opcode: "DATA_MOV" +// CHAIN-YAML: id: 113 +// CHAIN-YAML: time_step: 17 +// CHAIN-YAML: invalid_iterations: 1 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "WEST" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "$0" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - index_per_ii: 2 +// CHAIN-YAML: operations: +// CHAIN-YAML: - opcode: "GRANT_PREDICATE" +// CHAIN-YAML: id: 183 +// CHAIN-YAML: time_step: 19 +// CHAIN-YAML: invalid_iterations: 1 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "$0" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - operand: "$8" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "WEST" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - index_per_ii: 14 +// CHAIN-YAML: operations: +// CHAIN-YAML: - opcode: "DATA_MOV" +// CHAIN-YAML: id: 173 +// CHAIN-YAML: time_step: 14 +// CHAIN-YAML: invalid_iterations: 0 + // CHAIN-ASM-LABEL: PE(1,1): -// CHAIN-ASM: NOT, [$0] -> [$3], [$8], [$7], [$6], [NORTH, RED], [$5], [SOUTH, RED], [WEST, RED] (t=11, inv_iters=0) -// CHAIN-ASM: DATA_MOV, [$8] -> [$1] (t=12, inv_iters=0) -// CHAIN-ASM: DATA_MOV, [$1] -> [$0] (t=13, inv_iters=0) -// CHAIN-ASM: GRANT_PREDICATE, [$2], [$3] -> [$1] (t=14, inv_iters=0) -// CHAIN-ASM: DATA_MOV, [$0] -> [EAST, RED] (t=14, inv_iters=0) +// CHAIN-ASM: GRANT_PREDICATE, [$1], [$9] -> [WEST, RED] (t=17, inv_iters=1) +// CHAIN-ASM: DATA_MOV, [NORTH, RED] -> [$9] (t=17, inv_iters=1) +// CHAIN-ASM: ICMP_EQ, [$0], [$9] -> [$0] (t=18, inv_iters=1) +// CHAIN-ASM: NOT, [$0] -> [EAST, RED], [$9], [NORTH, RED] (t=19, inv_iters=1) +// CHAIN-ASM: GRANT_PREDICATE, [$0], [$0] -> [SOUTH, RED] (t=20, inv_iters=1) // CHAIN-ASM-LABEL: PE(2,1): -// CHAIN-ASM: GRANT_PREDICATE, [$7], [$8] -> [$7] (t=23, inv_iters=1) -// CHAIN-ASM: DATA_MOV, [WEST, RED] -> [$8] (t=15, inv_iters=0) +// CHAIN-ASM: GEP, [arg3], [$17], [$2] -> [SOUTH, RED] (t=17, inv_iters=1) +// CHAIN-ASM: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) // CHAIN-DFG: - id: 179 // CHAIN-DFG: opcode: "DATA_MOV" // CHAIN-DFG: tile_x: 2 -// CHAIN-DFG: tile_y: 1 -// CHAIN-DFG: time_step: 15 +// CHAIN-DFG: tile_y: 0 +// CHAIN-DFG: time_step: 18 // CHAIN-DFG: - id: 189 // CHAIN-DFG: opcode: "GRANT_PREDICATE" // CHAIN-DFG: tile_x: 2 -// CHAIN-DFG: tile_y: 1 -// CHAIN-DFG: time_step: 23 +// CHAIN-DFG: tile_y: 0 +// CHAIN-DFG: time_step: 19 // CHAIN-DFG: - id: 190 // CHAIN-DFG: opcode: "GRANT_PREDICATE" // CHAIN-DFG: tile_x: 1 // CHAIN-DFG: tile_y: 1 // CHAIN-DFG: time_step: 14 -// CHAIN-DFG: - id: 1790000 +// CHAIN-DFG: - id: 2170000 // CHAIN-DFG: opcode: "DATA_MOV" -// CHAIN-DFG: tile_x: 1 -// CHAIN-DFG: tile_y: 1 -// CHAIN-DFG: time_step: 12 -// CHAIN-DFG: - id: 1790001 +// CHAIN-DFG: tile_x: 2 +// CHAIN-DFG: tile_y: 2 +// CHAIN-DFG: time_step: 16 +// CHAIN-DFG: - id: 2200001 // CHAIN-DFG: opcode: "DATA_MOV" // CHAIN-DFG: tile_x: 1 -// CHAIN-DFG: tile_y: 1 -// CHAIN-DFG: time_step: 13 -// CHAIN-DFG: - id: 1790002 -// CHAIN-DFG: opcode: "DATA_MOV" +// CHAIN-DFG: tile_y: 2 +// CHAIN-DFG: time_step: 16 +// CHAIN-DFG: - id: 2400001 +// CHAIN-DFG: opcode: "CTRL_MOV" // CHAIN-DFG: tile_x: 1 -// CHAIN-DFG: tile_y: 1 -// CHAIN-DFG: time_step: 14 -// CHAIN-DFG: edges: -// CHAIN-DFG: - from: 159 -// CHAIN-DFG-NEXT: to: 1790000 -// CHAIN-DFG-NEXT: - from: 1790000 -// CHAIN-DFG-NEXT: to: 1790001 -// CHAIN-DFG-NEXT: - from: 1790001 -// CHAIN-DFG-NEXT: to: 1790002 -// CHAIN-DFG-NEXT: - from: 1790002 -// CHAIN-DFG-NEXT: to: 179 -// CHAIN-DFG-NEXT: - from: 179 -// CHAIN-DFG-NEXT: to: 189 +// CHAIN-DFG: tile_y: 2 +// CHAIN-DFG: time_step: 20 +// CHAIN-DFG: - id: 2620001 +// CHAIN-DFG: opcode: "CTRL_MOV" +// CHAIN-DFG: tile_x: 0 +// CHAIN-DFG-NEXT: tile_y: 2 +// CHAIN-DFG-NEXT: time_step: 21 +// CHAIN-DFG-NEXT: - id: 2640001 +// CHAIN-DFG-NEXT: opcode: "CTRL_MOV" +// CHAIN-DFG-NEXT: tile_x: 1 +// CHAIN-DFG-NEXT: tile_y: 1 +// CHAIN-DFG-NEXT: time_step: 21 +// CHAIN-DFG-NEXT:edges: +// CHAIN-DFG-NEXT: - from: 42 +// CHAIN-DFG-NEXT: to: 43 +// CHAIN-DFG-NEXT: - from: 43 +// CHAIN-DFG-NEXT: to: 45 +// CHAIN-DFG-NEXT: - from: 46 +// CHAIN-DFG-NEXT: to: 52 +// CHAIN-DFG-NEXT: - from: 52 +// CHAIN-DFG-NEXT: to: 58 +// CHAIN-DFG-NEXT: - from: 262 +// CHAIN-DFG-NEXT: to: 84 +// CHAIN-DFG-NEXT: - from: 263 +// CHAIN-DFG-NEXT: to: 83 +// CHAIN-DFG-NEXT: - from: 264 +// CHAIN-DFG-NEXT: to: 82 +// CHAIN-DFG-NEXT: - from: 265 +// CHAIN-DFG-NEXT: to: 68 +// CHAIN-DFG-NEXT: - from: 237 +// CHAIN-DFG-NEXT: to: 101 +// CHAIN-DFG-NEXT: - from: 240 +// CHAIN-DFG-NEXT: to: 81 +// CHAIN-DFG-NEXT: - from: 241 +// CHAIN-DFG-NEXT: to: 79 +// CHAIN-DFG-NEXT: - from: 242 +// CHAIN-DFG-NEXT: to: 80 +// CHAIN-DFG-NEXT: - from: 81 +// CHAIN-DFG-NEXT: to: 90 +// CHAIN-DFG-NEXT: - from: 90 +// CHAIN-DFG-NEXT: to: 98 +// CHAIN-DFG-NEXT: - from: 194 +// CHAIN-DFG-NEXT: to: 98 +// CHAIN-DFG-NEXT: - from: 195 +// CHAIN-DFG-NEXT: to: 123 +// CHAIN-DFG-NEXT: - from: 199 +// CHAIN-DFG-NEXT: to: 95 +// CHAIN-DFG-NEXT: - from: 200 +// CHAIN-DFG-NEXT: to: 117 +// CHAIN-DFG-NEXT: - from: 97 +// CHAIN-DFG-NEXT: to: 111 +// CHAIN-DFG-NEXT: - from: 111 +// CHAIN-DFG-NEXT: to: 120 +// CHAIN-DFG-NEXT: - from: 97 +// CHAIN-DFG-NEXT: to: 110 +// CHAIN-DFG-NEXT: - from: 110 +// CHAIN-DFG-NEXT: to: 119 +// CHAIN-DFG-NEXT: - from: 119 +// CHAIN-DFG-NEXT: to: 128 +// CHAIN-DFG-NEXT: - from: 128 +// CHAIN-DFG-NEXT: to: 202 +// CHAIN-DFG-NEXT: - from: 117 +// CHAIN-DFG-NEXT: to: 124 +// CHAIN-DFG-NEXT: - from: 124 +// CHAIN-DFG-NEXT: to: 189 +// CHAIN-DFG-NEXT: - from: 189 +// CHAIN-DFG-NEXT: to: 200 +// CHAIN-DFG-NEXT: - from: 159 +// CHAIN-DFG-NEXT: to: 176 +// CHAIN-DFG-NEXT: - from: 176 +// CHAIN-DFG-NEXT: to: 186 +// CHAIN-DFG-NEXT: - from: 123 +// CHAIN-DFG-NEXT: to: 137 +// CHAIN-DFG-NEXT: - from: 137 +// CHAIN-DFG-NEXT: to: 184 +// CHAIN-DFG-NEXT: - from: 184 +// CHAIN-DFG-NEXT: to: 195 \ No newline at end of file diff --git a/test/e2e/gemv/gemv_kernel.mlir b/test/e2e/gemv/gemv_kernel.mlir index 8701a08b..7b31568e 100644 --- a/test/e2e/gemv/gemv_kernel.mlir +++ b/test/e2e/gemv/gemv_kernel.mlir @@ -251,16 +251,6 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 710002 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" // YAML-NEXT: - column: 1 // YAML-NEXT: row: 0 // YAML-NEXT: core_id: "1" @@ -305,18 +295,6 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 710001 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 9 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" @@ -344,7 +322,7 @@ // YAML-NEXT: - operand: "WEST" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 850000 +// YAML-NEXT: id: 850001 // YAML-NEXT: time_step: 10 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: @@ -363,760 +341,7 @@ // YAML-NEXT: operations: // YAML-NEXT: - opcode: "STORE" // YAML-NEXT: id: 118 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 49 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 710000 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 93 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "4" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 80 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$9" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 50 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 26 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 61 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 75 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 92 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 98 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 79 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 71 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 78 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 109 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 24 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 41 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 19 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 48 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 58 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 63 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 530000 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 81 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 25 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$6" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 69 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 830000 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 99 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$5" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 700002 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 60 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 112 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 31 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 42 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 62 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 690000 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 53 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 38 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 700001 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 100 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 111 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 700000 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 107 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 51 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 59 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 108 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 113 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 117 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 17 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 28 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 68 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 77 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" + // ASM: # Compiled II: 11 diff --git a/test/e2e/spmv/spmv_kernel.mlir b/test/e2e/spmv/spmv_kernel.mlir index 37c40707..ecff552f 100644 --- a/test/e2e/spmv/spmv_kernel.mlir +++ b/test/e2e/spmv/spmv_kernel.mlir @@ -345,7 +345,8 @@ // MAPPING-NEXT: neura.yield {dfg_id = 10 : i32} // MAPPING-NEXT: } // MAPPING-NEXT: } -// YAML: columns: 4 +// YAML: array_config: +// YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 // YAML-NEXT: compiled_ii: 15 // YAML-NEXT: cores: @@ -357,252 +358,8 @@ // YAML-NEXT: instructions: // YAML-NEXT: - index_per_ii: 0 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SGT" -// YAML-NEXT: id: 14 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 18 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 200000 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 93 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 54 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 30 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "AND" -// YAML-NEXT: id: 66 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#2147483644" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 39 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 238 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 239 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2170002 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 51 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 249 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 2000003 -// YAML-NEXT: time_step: 25 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 80 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 268 -// YAML-NEXT: time_step: 26 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 44 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 116 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 235 // YAML-NEXT: time_step: 15 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: @@ -643,16 +400,6 @@ // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 150000 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 3 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "GRANT_PREDICATE" @@ -699,422 +446,95 @@ // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 6 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 390001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 68 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 274 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2390000 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2140002 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "AND" -// YAML-NEXT: id: 46 -// YAML-NEXT: time_step: 9 +// YAML-NEXT: id: 54 +// YAML-NEXT: time_step: 6 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 740000 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 +// YAML-NEXT: - index_per_ii: 7 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 55 -// YAML-NEXT: time_step: 10 +// YAML-NEXT: - opcode: "AND" +// YAML-NEXT: id: 66 +// YAML-NEXT: time_step: 7 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" +// YAML-NEXT: - operand: "#2147483644" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 730001 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 217 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 2000002 -// YAML-NEXT: time_step: 24 +// YAML-NEXT: id: 2830001 +// YAML-NEXT: time_step: 22 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 67 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1740000 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 +// YAML-NEXT: - index_per_ii: 8 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 810000 -// YAML-NEXT: time_step: 12 +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 92 +// YAML-NEXT: time_step: 8 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2200004 -// YAML-NEXT: time_step: 26 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 285 -// YAML-NEXT: time_step: 27 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 151 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: - operand: "$9" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 145 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 150001 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 273 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 272 -// YAML-NEXT: time_step: 18 +// YAML-NEXT: id: 2580001 +// YAML-NEXT: time_step: 23 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 390000 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 146 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "NORTH" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 +// YAML-NEXT: - index_per_ii: 9 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 200002 -// YAML-NEXT: time_step: 6 +// YAML-NEXT: - opcode: "AND" +// YAML-NEXT: id: 46 +// YAML-NEXT: time_step: 9 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 830000 -// YAML-NEXT: time_step: 21 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 312 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" +// YAML-NEXT: - operand: "$8" // YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 283 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "#3" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 248 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 214 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 2000001 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 10 // YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 315 -// YAML-NEXT: time_step: 24 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 317 -// YAML-NEXT: time_step: 25 -// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: - opcode: "ICMP_EQ" +// YAML-NEXT: id: 55 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1740001 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: - operand: "#0" // YAML-NEXT: color: "RED" // YAML-NEXT: dst_operands: // YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 284 -// YAML-NEXT: time_step: 27 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2200005 -// YAML-NEXT: time_step: 27 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" // ASM: # Compiled II: 15 diff --git a/test/neura/ctrl/branch_for.mlir b/test/neura/ctrl/branch_for.mlir index 654e4f1f..6b031256 100644 --- a/test/neura/ctrl/branch_for.mlir +++ b/test/neura/ctrl/branch_for.mlir @@ -231,7 +231,7 @@ func.func @loop_test() -> f32 { // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 190000 +// YAML-NEXT: id: 190001 // YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: @@ -422,33 +422,6 @@ func.func @loop_test() -> f32 { // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: // YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 27 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VALUE" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" // ASM: # Compiled II: 4 // ASM: PE(0,0): From 6676bab86f38b0cdf636cf97ee7b27df6efebb11 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Thu, 26 Mar 2026 08:34:53 +0800 Subject: [PATCH 23/26] Fix formatting in comments for clarity in MappingState.cpp and fir_kernel.mlir --- lib/NeuraDialect/Mapping/MappingState.cpp | 2 +- test/compiler_e2e/fir/fir_kernel.mlir | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index e53a1a27..5a25629f 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -386,7 +386,7 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc, // NOTE: Register-file (cluster) port constraints (both write-vs-write AND // read-vs-read) are enforced inside getAvailableRegister() in - // mapping_util.cpp, NOT here. That function knows which time step is a + // mapping_util.cpp, NOT here. That function knows which time step is a // write (start_time) and which is a read (exclusive_end_time - 1), so it // calls: // - isRegisterWriteAvailableAcrossTime(reg, start_time) diff --git a/test/compiler_e2e/fir/fir_kernel.mlir b/test/compiler_e2e/fir/fir_kernel.mlir index 42a998c3..20ac811e 100644 --- a/test/compiler_e2e/fir/fir_kernel.mlir +++ b/test/compiler_e2e/fir/fir_kernel.mlir @@ -8,7 +8,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data From 048e313de01008e8d388cb0b8244bcf522fdb011 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Thu, 26 Mar 2026 12:24:30 +0800 Subject: [PATCH 24/26] Update tests --- test/compiler_e2e/fir/fir_kernel.mlir | 12 +- test/e2e/axpy/axpy_kernel.mlir | 416 +------ test/e2e/bicg/bicg_int_kernel.mlir | 618 ++-------- test/e2e/bicg/bicg_kernel.mlir | 903 ++------------ test/e2e/fft/fft_kernel.mlir | 1411 ++++++++-------------- test/e2e/fir/fir_kernel.mlir | 617 ++++------ test/e2e/fir/fir_kernel_vec.mlir | 615 ++++------ test/e2e/gemm/gemm_kernel.mlir | 1393 +++++++++++----------- test/e2e/gemv/gemv_kernel.mlir | 823 ++++++------- test/e2e/relu/relu_kernel.mlir | 661 ++++------- test/e2e/spmv/spmv_kernel.mlir | 1569 ++++++++----------------- test/mapping_quality/branch_for.mlir | 578 +++------ test/neura/ctrl/branch_for.mlir | 278 +---- 13 files changed, 3233 insertions(+), 6661 deletions(-) diff --git a/test/compiler_e2e/fir/fir_kernel.mlir b/test/compiler_e2e/fir/fir_kernel.mlir index 20ac811e..8dde130f 100644 --- a/test/compiler_e2e/fir/fir_kernel.mlir +++ b/test/compiler_e2e/fir/fir_kernel.mlir @@ -8,7 +8,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32} +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data @@ -131,7 +131,7 @@ // YAML-NEXT: - index_per_ii: 4 // YAML-NEXT: operations: // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 180001 +// YAML-NEXT: id: 180000 // YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: @@ -227,10 +227,4 @@ // YAML-NEXT: - operand: "$0" // YAML-NEXT: color: "RED" // YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 8 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" \ No newline at end of file +// YAML-NEXT: operations: \ No newline at end of file diff --git a/test/e2e/axpy/axpy_kernel.mlir b/test/e2e/axpy/axpy_kernel.mlir index 7474a7cd..25a78313 100644 --- a/test/e2e/axpy/axpy_kernel.mlir +++ b/test/e2e/axpy/axpy_kernel.mlir @@ -22,7 +22,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // -// MAPPING: func.func @kernel_axpy_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel_axpy_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = neura.reserve {dfg_id = 1 : i32} : !neura.data // MAPPING-NEXT: %2 = "neura.data_mov"(%0) {dfg_id = 3 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data @@ -61,307 +61,45 @@ // MAPPING-NEXT: neura.yield {dfg_id = 2 : i32} // MAPPING-NEXT: } // MAPPING-NEXT: } + + // -// YAML: array_config: +// YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 // YAML-NEXT: compiled_ii: 5 // YAML-NEXT: cores: -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "0" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 32 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 290002 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 290001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "3" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 26 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 18 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "4" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 220002 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 130003 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 150001 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 220001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 130002 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 24 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 30 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 19 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 31 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 4 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 8 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 16 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#16" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 25 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "0" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 32 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 35 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" // // ASM: # Compiled II: 5 // ASM: PE(0,0): @@ -371,89 +109,5 @@ // ASM-NEXT: { // ASM-NEXT: STORE, [$0], [NORTH, RED] (t=9, inv_iters=1) // ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(2,0): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM: PE(3,0): -// ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [#3] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(0,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=8, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(0,2): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(1,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [$0] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [$0] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(2,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [EAST, RED], [NORTH, RED], [$0] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#16] -> [$0], [WEST, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(3,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=0, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg0], [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(0,3): -// ASM-NEXT: { -// ASM-NEXT: LOAD, [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM: PE(1,3): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(2,3): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [WEST, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) diff --git a/test/e2e/bicg/bicg_int_kernel.mlir b/test/e2e/bicg/bicg_int_kernel.mlir index a8fcbcae..8e2f1761 100644 --- a/test/e2e/bicg/bicg_int_kernel.mlir +++ b/test/e2e/bicg/bicg_int_kernel.mlir @@ -27,7 +27,7 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @kernel_bicg_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 10 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel_bicg_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 10 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 4 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.constant"() <{value = "%arg3"}> {dfg_id = 0 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.constant"() <{value = 0 : i8}> {dfg_id = 1 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.constant"() <{value = 32 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 1 : i32}]} : () -> !neura.data @@ -165,501 +165,127 @@ // MAPPING-NEXT: } -// YAML: array_config: -// YAML-NEXT: columns: 4 -// YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 10 -// YAML-NEXT: cores: -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "0" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 3 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 101 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 19 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 46 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 47 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 28 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 730001 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 127 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$9" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 130 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 69 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 64 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 84 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 65 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 55 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 78 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$9" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 38 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 92 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 122 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "3" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CONSTANT" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "4" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 20 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 102 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" +// YAML: - column: 0 +// YAML: row: 0 +// YAML: core_id: "0" +// YAML: entries: +// YAML: - entry_id: "entry0" +// YAML: instructions: +// YAML: - index_per_ii: 5 +// YAML: operations: +// YAML: - opcode: "GEP" +// YAML: id: 46 +// YAML: time_step: 5 +// YAML: invalid_iterations: 0 +// YAML: src_operands: +// YAML: - operand: "arg1" +// YAML: color: "RED" +// YAML: - operand: "$0" +// YAML: color: "RED" +// YAML: dst_operands: +// YAML: - operand: "EAST" +// YAML: color: "RED" +// YAML: - index_per_ii: 6 +// YAML: operations: +// YAML: - opcode: "GEP" +// YAML: id: 47 +// YAML: time_step: 6 +// YAML: invalid_iterations: 0 +// YAML: src_operands: +// YAML: - operand: "arg3" +// YAML: color: "RED" +// YAML: - operand: "$1" +// YAML: color: "RED" +// YAML: dst_operands: +// YAML: - operand: "EAST" +// YAML: color: "RED" +// YAML: - operand: "NORTH" +// YAML: color: "RED" +// YAML: - column: 0 +// YAML: row: 2 +// YAML: core_id: "8" +// YAML: entries: +// YAML: - entry_id: "entry0" +// YAML: instructions: +// YAML: - index_per_ii: 4 +// YAML: operations: +// YAML: - opcode: "GEP" +// YAML: id: 31 +// YAML: time_step: 4 +// YAML: invalid_iterations: 0 +// YAML: src_operands: +// YAML: - operand: "arg2" +// YAML: color: "RED" +// YAML: - operand: "$0" +// YAML: color: "RED" +// YAML: dst_operands: +// YAML: - operand: "EAST" +// YAML: color: "RED" +// YAML: - index_per_ii: 5 +// YAML: operations: +// YAML: - opcode: "GEP" +// YAML: id: 32 +// YAML: time_step: 5 +// YAML: invalid_iterations: 0 +// YAML: src_operands: +// YAML: - operand: "arg4" +// YAML: color: "RED" +// YAML: - operand: "$1" +// YAML: color: "RED" +// YAML: dst_operands: +// YAML: - operand: "NORTH" +// YAML: color: "RED" +// YAML: - operand: "$0" +// YAML: color: "RED" // ASM: # Compiled II: 10 -// ASM: PE(0,0): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [$0], [NORTH, RED] (t=0, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=10, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$1], [NORTH, RED] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [EAST, RED] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [$0] -> [EAST, RED] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$8] -> [EAST, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$9], [$0] -> [WEST, RED] (t=10, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: STORE, [NORTH, RED], [$1] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [WEST, RED] -> [NORTH, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [WEST, RED] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$0] -> [$9] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(3,0): -// ASM-NEXT: { -// ASM-NEXT: CONSTANT, [#0] -> [NORTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM: PE(0,1): -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [NORTH, RED] -> [NORTH, RED], [EAST, RED], [$1] (t=1, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [NORTH, RED], [SOUTH, RED], [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED], [$2] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$8] -> [EAST, RED], [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [EAST, RED] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [EAST, RED] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: ADD, [SOUTH, RED], [NORTH, RED] -> [EAST, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(1,1): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [WEST, RED] (t=10, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=10, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: SHL, [WEST, RED], [#5] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg0], [$0] -> [NORTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [WEST, RED], [#8] -> [$0], [WEST, RED], [SOUTH, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [WEST, RED], [NORTH, RED], [$8], [SOUTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: ADD, [WEST, RED], [#1] -> [$0], [NORTH, RED] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#8] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [WEST, RED], [SOUTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [EAST, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(2,1): -// ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [WEST, RED] (t=10, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: CONSTANT, [arg3] -> [EAST, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: CONSTANT, [#32] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: MEMSET, [WEST, RED], [SOUTH, RED], [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(0,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [SOUTH, RED] (t=10, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [$0] -> [EAST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg4], [$0] -> [$9], [EAST, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0], [$8] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$0], [EAST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: MUL, [SOUTH, RED], [$0] -> [SOUTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: STORE, [#0], [$9] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(1,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [$1] (t=10, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$8] -> [$2] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$2] -> [WEST, RED], [$2] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$1] -> [WEST, RED], [$1] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [WEST, RED], [$0] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: MUL, [SOUTH, RED], [WEST, RED] -> [NORTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(0,3): -// ASM-NEXT: { -// ASM-NEXT: STORE, [EAST, RED], [$0] (t=10, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [SOUTH, RED] -> [EAST, RED] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM: PE(1,3): -// ASM-NEXT: { -// ASM-NEXT: ADD, [WEST, RED], [SOUTH, RED] -> [WEST, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(0,0): +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0] -> [$0], [NORTH, RED] (t=0, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [EAST, RED] -> [$1], [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg1], [$0] -> [EAST, RED] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg3], [$0] -> [EAST, RED] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$1], [$8] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$9], [$0] -> [WEST, RED] (t=10, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: STORE, [NORTH, RED], [$1] (t=11, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [WEST, RED] -> [NORTH, RED] (t=6, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [WEST, RED] -> [WEST, RED] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$0] -> [$9] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED] (t=9, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) diff --git a/test/e2e/bicg/bicg_kernel.mlir b/test/e2e/bicg/bicg_kernel.mlir index 5f6f1384..76d89236 100644 --- a/test/e2e/bicg/bicg_kernel.mlir +++ b/test/e2e/bicg/bicg_kernel.mlir @@ -46,66 +46,65 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// BEFORE_CANONICALIZE: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// BEFORE_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 -// BEFORE_CANONICALIZE-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 -// BEFORE_CANONICALIZE-NEXT: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr -// BEFORE_CANONICALIZE-NEXT: %3 = "neura.constant"() <{value = "%arg4"}> : () -> !llvm.ptr -// BEFORE_CANONICALIZE-NEXT: %4 = "neura.constant"() <{value = 0 : i8}> : () -> i8 -// BEFORE_CANONICALIZE-NEXT: %5 = "neura.constant"() <{value = 0 : i64}> : () -> i64 -// BEFORE_CANONICALIZE-NEXT: %6 = "neura.icmp"(%0) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 -// BEFORE_CANONICALIZE-NEXT: neura.cond_br %6 : i1 then to ^bb1 else to ^bb2 -// BEFORE_CANONICALIZE-NEXT: ^bb1: // pred: ^bb0 -// BEFORE_CANONICALIZE-NEXT: %7 = neura.zext %0 : i32 -> i64 -// BEFORE_CANONICALIZE-NEXT: %8 = "neura.shl"(%7) {rhs_value = 3 : i64} : (i64) -> i64 -// BEFORE_CANONICALIZE-NEXT: "neura.memset"(%2, %4, %8) <{is_volatile = false}> : (!llvm.ptr, i8, i64) -> () -// BEFORE_CANONICALIZE-NEXT: %9 = "neura.icmp"(%1) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 -// BEFORE_CANONICALIZE-NEXT: neura.cond_br %9 : i1 then to ^bb4 else to ^bb8 -// BEFORE_CANONICALIZE-NEXT: ^bb2: // pred: ^bb0 -// BEFORE_CANONICALIZE-NEXT: %10 = "neura.icmp"(%1) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 -// BEFORE_CANONICALIZE-NEXT: neura.cond_br %10 : i1 then to ^bb3 else to ^bb8 -// BEFORE_CANONICALIZE-NEXT: ^bb3: // pred: ^bb2 -// BEFORE_CANONICALIZE-NEXT: %11 = neura.zext %1 : i32 -> i64 -// BEFORE_CANONICALIZE-NEXT: %12 = "neura.shl"(%11) {rhs_value = 3 : i64} : (i64) -> i64 -// BEFORE_CANONICALIZE-NEXT: "neura.memset"(%3, %4, %12) <{is_volatile = false}> : (!llvm.ptr, i8, i64) -> () -// BEFORE_CANONICALIZE-NEXT: neura.br to ^bb8 -// BEFORE_CANONICALIZE-NEXT: ^bb4: // pred: ^bb1 -// BEFORE_CANONICALIZE-NEXT: %13 = neura.zext %1 : i32 -> i64 -// BEFORE_CANONICALIZE-NEXT: %14 = neura.zext %0 : i32 -> i64 -// BEFORE_CANONICALIZE-NEXT: neura.br %5 : i64 to ^bb5 -// BEFORE_CANONICALIZE-NEXT: ^bb5(%15: i64): // 2 preds: ^bb4, ^bb7 -// BEFORE_CANONICALIZE-NEXT: %16 = "neura.gep"(%15) <{operandSegmentSizes = array}> {lhs_value = "%arg4"} : (i64) -> !llvm.ptr -// BEFORE_CANONICALIZE-NEXT: "neura.store"(%16) {lhs_value = 0.000000e+00 : f64} : (!llvm.ptr) -> () -// BEFORE_CANONICALIZE-NEXT: %17 = "neura.gep"(%15) <{operandSegmentSizes = array}> {lhs_value = "%arg6"} : (i64) -> !llvm.ptr -// BEFORE_CANONICALIZE-NEXT: neura.br %5 : i64 to ^bb6 -// BEFORE_CANONICALIZE-NEXT: ^bb6(%18: i64): // 2 preds: ^bb5, ^bb6 -// BEFORE_CANONICALIZE-NEXT: %19 = "neura.gep"(%18) <{operandSegmentSizes = array}> {lhs_value = "%arg3"} : (i64) -> !llvm.ptr -// BEFORE_CANONICALIZE-NEXT: %20 = "neura.load"(%19) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE-NEXT: %21 = "neura.load"(%17) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE-NEXT: %22 = "neura.gep"(%15, %18) <{operandSegmentSizes = array}> {lhs_value = "%arg2"} : (i64, i64) -> !llvm.ptr -// BEFORE_CANONICALIZE-NEXT: %23 = "neura.load"(%22) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE-NEXT: %24 = "neura.fmul_fadd"(%21, %23, %20) : (f64, f64, f64) -> f64 -// BEFORE_CANONICALIZE-NEXT: "neura.store"(%24, %19) : (f64, !llvm.ptr) -> () -// BEFORE_CANONICALIZE-NEXT: %25 = "neura.load"(%16) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE-NEXT: %26 = "neura.load"(%22) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE-NEXT: %27 = "neura.gep"(%18) <{operandSegmentSizes = array}> {lhs_value = "%arg5"} : (i64) -> !llvm.ptr -// BEFORE_CANONICALIZE-NEXT: %28 = "neura.load"(%27) : (!llvm.ptr) -> f64 -// BEFORE_CANONICALIZE-NEXT: %29 = "neura.fmul_fadd"(%26, %28, %25) : (f64, f64, f64) -> f64 -// BEFORE_CANONICALIZE-NEXT: "neura.store"(%29, %16) : (f64, !llvm.ptr) -> () -// BEFORE_CANONICALIZE-NEXT: %30 = "neura.add"(%18) {rhs_value = 1 : i64} : (i64) -> i64 -// BEFORE_CANONICALIZE-NEXT: %31 = "neura.icmp"(%30, %14) <{cmpType = "eq"}> : (i64, i64) -> i1 -// BEFORE_CANONICALIZE-NEXT: neura.cond_br %31 : i1 then to ^bb7 else %30 : i64 to ^bb6 -// BEFORE_CANONICALIZE-NEXT: ^bb7: // pred: ^bb6 -// BEFORE_CANONICALIZE-NEXT: %32 = "neura.add"(%15) {rhs_value = 1 : i64} : (i64) -> i64 -// BEFORE_CANONICALIZE-NEXT: %33 = "neura.icmp"(%32, %13) <{cmpType = "eq"}> : (i64, i64) -> i1 -// BEFORE_CANONICALIZE-NEXT: neura.cond_br %33 : i1 then to ^bb8 else %32 : i64 to ^bb5 -// BEFORE_CANONICALIZE-NEXT: ^bb8: // 4 preds: ^bb1, ^bb2, ^bb3, ^bb7 -// BEFORE_CANONICALIZE-NEXT: "neura.return"() : () -> () -// BEFORE_CANONICALIZE-NEXT: } -// BEFORE_CANONICALIZE-NEXT: } +// BEFORE_CANONICALIZE: module attributes +// BEFORE_CANONICALIZE: func.func @kernel +// BEFORE_CANONICALIZE: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 +// BEFORE_CANONICALIZE: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 +// BEFORE_CANONICALIZE: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr +// BEFORE_CANONICALIZE: %3 = "neura.constant"() <{value = "%arg4"}> : () -> !llvm.ptr +// BEFORE_CANONICALIZE: %4 = "neura.constant"() <{value = 0 : i8}> : () -> i8 +// BEFORE_CANONICALIZE: %5 = "neura.constant"() <{value = 0 : i64}> : () -> i64 +// BEFORE_CANONICALIZE: %6 = "neura.icmp"(%0) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 +// BEFORE_CANONICALIZE: neura.cond_br %6 : i1 then to ^bb1 else to ^bb2 +// BEFORE_CANONICALIZE: ^bb1: // pred: ^bb0 +// BEFORE_CANONICALIZE: %7 = neura.zext %0 : i32 -> i64 +// BEFORE_CANONICALIZE: %8 = "neura.shl"(%7) {rhs_value = 3 : i64} : (i64) -> i64 +// BEFORE_CANONICALIZE: "neura.memset"(%2, %4, %8) <{is_volatile = false}> : (!llvm.ptr, i8, i64) -> () +// BEFORE_CANONICALIZE: %9 = "neura.icmp"(%1) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 +// BEFORE_CANONICALIZE: neura.cond_br %9 : i1 then to ^bb4 else to ^bb8 +// BEFORE_CANONICALIZE: ^bb2: // pred: ^bb0 +// BEFORE_CANONICALIZE: %10 = "neura.icmp"(%1) <{cmpType = "sgt"}> {rhs_value = 0 : i32} : (i32) -> i1 +// BEFORE_CANONICALIZE: neura.cond_br %10 : i1 then to ^bb3 else to ^bb8 +// BEFORE_CANONICALIZE: ^bb3: // pred: ^bb2 +// BEFORE_CANONICALIZE: %11 = neura.zext %1 : i32 -> i64 +// BEFORE_CANONICALIZE: %12 = "neura.shl"(%11) {rhs_value = 3 : i64} : (i64) -> i64 +// BEFORE_CANONICALIZE: "neura.memset"(%3, %4, %12) <{is_volatile = false}> : (!llvm.ptr, i8, i64) -> () +// BEFORE_CANONICALIZE: neura.br to ^bb8 +// BEFORE_CANONICALIZE: ^bb4: // pred: ^bb1 +// BEFORE_CANONICALIZE: %13 = neura.zext %1 : i32 -> i64 +// BEFORE_CANONICALIZE: %14 = neura.zext %0 : i32 -> i64 +// BEFORE_CANONICALIZE: neura.br %5 : i64 to ^bb5 +// BEFORE_CANONICALIZE: ^bb5(%15: i64): // 2 preds: ^bb4, ^bb7 +// BEFORE_CANONICALIZE: %16 = "neura.gep"(%15) <{operandSegmentSizes = array}> {lhs_value = "%arg4"} : (i64) -> !llvm.ptr +// BEFORE_CANONICALIZE: "neura.store"(%16) {lhs_value = 0.000000e+00 : f64} : (!llvm.ptr) -> () +// BEFORE_CANONICALIZE: %17 = "neura.gep"(%15) <{operandSegmentSizes = array}> {lhs_value = "%arg6"} : (i64) -> !llvm.ptr +// BEFORE_CANONICALIZE: neura.br %5 : i64 to ^bb6 +// BEFORE_CANONICALIZE: ^bb6(%18: i64): // 2 preds: ^bb5, ^bb6 +// BEFORE_CANONICALIZE: %19 = "neura.gep"(%18) <{operandSegmentSizes = array}> {lhs_value = "%arg3"} : (i64) -> !llvm.ptr +// BEFORE_CANONICALIZE: %20 = "neura.load"(%19) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE: %21 = "neura.load"(%17) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE: %22 = "neura.gep"(%15, %18) <{operandSegmentSizes = array}> {lhs_value = "%arg2"} : (i64, i64) -> !llvm.ptr +// BEFORE_CANONICALIZE: %23 = "neura.load"(%22) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE: %24 = "neura.fmul_fadd"(%21, %23, %20) : (f64, f64, f64) -> f64 +// BEFORE_CANONICALIZE: "neura.store"(%24, %19) : (f64, !llvm.ptr) -> () +// BEFORE_CANONICALIZE: %25 = "neura.load"(%16) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE: %26 = "neura.load"(%22) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE: %27 = "neura.gep"(%18) <{operandSegmentSizes = array}> {lhs_value = "%arg5"} : (i64) -> !llvm.ptr +// BEFORE_CANONICALIZE: %28 = "neura.load"(%27) : (!llvm.ptr) -> f64 +// BEFORE_CANONICALIZE: %29 = "neura.fmul_fadd"(%26, %28, %25) : (f64, f64, f64) -> f64 +// BEFORE_CANONICALIZE: "neura.store"(%29, %16) : (f64, !llvm.ptr) -> () +// BEFORE_CANONICALIZE: %30 = "neura.add"(%18) {rhs_value = 1 : i64} : (i64) -> i64 +// BEFORE_CANONICALIZE: %31 = "neura.icmp"(%30, %14) <{cmpType = "eq"}> : (i64, i64) -> i1 +// BEFORE_CANONICALIZE: neura.cond_br %31 : i1 then to ^bb7 else %30 : i64 to ^bb6 +// BEFORE_CANONICALIZE: ^bb7: // pred: ^bb6 +// BEFORE_CANONICALIZE: %32 = "neura.add"(%15) {rhs_value = 1 : i64} : (i64) -> i64 +// BEFORE_CANONICALIZE: %33 = "neura.icmp"(%32, %13) <{cmpType = "eq"}> : (i64, i64) -> i1 +// BEFORE_CANONICALIZE: neura.cond_br %33 : i1 then to ^bb8 else %32 : i64 to ^bb5 +// BEFORE_CANONICALIZE: ^bb8: // 4 preds: ^bb1, ^bb2, ^bb3, ^bb7 +// BEFORE_CANONICALIZE: "neura.return"() : () -> () -// AFTER_CANONICALIZE: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", linkage = #llvm.linkage, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// AFTER_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 +// AFTER_CANONICALIZE: func.func @kernel +// AFTER_CANONICALIZE-NEXT: %0 = "neura.constant"() <{value = "%arg0"}> : () -> i32 // AFTER_CANONICALIZE-NEXT: %1 = "neura.constant"() <{value = "%arg1"}> : () -> i32 // AFTER_CANONICALIZE-NEXT: %2 = "neura.constant"() <{value = "%arg3"}> : () -> !llvm.ptr // AFTER_CANONICALIZE-NEXT: %3 = "neura.constant"() <{value = "%arg4"}> : () -> !llvm.ptr @@ -159,11 +158,9 @@ // AFTER_CANONICALIZE-NEXT: neura.cond_br %60 : i1 then to ^bb8 else %59, %57, %58, %56 : i64, i64, i64, i64 to ^bb5 // AFTER_CANONICALIZE-NEXT: ^bb8: // 4 preds: ^bb1, ^bb2, ^bb3, ^bb7 // AFTER_CANONICALIZE-NEXT: "neura.return"() : () -> () -// AFTER_CANONICALIZE-NEXT: } -// AFTER_CANONICALIZE-NEXT: } -// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 12 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg6: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 12 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { // MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}]} : () -> !neura.data // MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data // MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = "%arg1"}> {dfg_id = 2 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data @@ -410,7 +407,7 @@ // MAPPING-NEXT: } // MAPPING-NEXT: } -// YAML: array_config: +// YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 // YAML-NEXT: compiled_ii: 12 @@ -548,460 +545,38 @@ // YAML-NEXT: - opcode: "ICMP_SGT" // YAML-NEXT: id: 67 // YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 185 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 740001 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 350001 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 330001 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1710001 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 220002 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1720002 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 69 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 90 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 11 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 159 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 1930001 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 192 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" +// YAML-NEXT: invalid_iterations // ASM: # Compiled II: 12 -// ASM: PE(0,0): -// ASM-NEXT: { -// ASM-NEXT: CONSTANT, [arg0] -> [$0] (t=0, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [NORTH, RED], [EAST, RED], [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: FMUL_FADD, [$8], [EAST, RED], [$2] -> [NORTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$8], [NORTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [$0], [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [NORTH, RED], [EAST, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [EAST, RED] (t=12, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [EAST, RED] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM: PE(2,0): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [WEST, RED] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [EAST, RED], [$8], [WEST, RED], [NORTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$16] -> [$9] (t=18, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$16] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$9] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$16] -> [NORTH, RED], [WEST, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(3,0): -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [NORTH, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg1] -> [WEST, RED] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [WEST, RED] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$1] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM: PE(0,1): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [NORTH, RED] (t=12, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [EAST, RED] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [EAST, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: STORE, [SOUTH, RED], [$16] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM: PE(1,1): -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [EAST, RED], [NORTH, RED], [$1], [$9] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [EAST, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$1] -> [$8] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$10] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$0], [$9] -> [EAST, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [EAST, RED] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$10], [$1] -> [EAST, RED] (t=19, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$0] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [$0], [$8] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [EAST, RED], [$0] -> [$0], [EAST, RED], [SOUTH, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM: PE(2,1): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [$0] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$9], [NORTH, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$8] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$16] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$9], [$0] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [NORTH, RED], [WEST, RED], [$1], [SOUTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [EAST, RED] (t=17, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [SOUTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$16], [$1] -> [WEST, RED] (t=18, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [EAST, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [WEST, RED], [$0] -> [$0], [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [WEST, RED] -> [EAST, RED], [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [EAST, RED], [NORTH, RED], [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [WEST, RED], [$8] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [$0] -> [SOUTH, RED], [WEST, RED] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$8] -> [WEST, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: PHI, [$0], [$8], [WEST, RED] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [$0] (t=19, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$8] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(0,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg4] -> [$0] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [EAST, RED] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=13, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=13, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [$1] (t=14, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=14, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [EAST, RED] -> [SOUTH, RED] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=4, inv_iters=0) -// ASM-NEXT: LOAD, [$0] -> [$0] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$9] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: SHL, [$1], [#3] -> [$16], [NORTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=17, inv_iters=1) +// ASM: PE(0,0): +// ASM-NEXT: { +// ASM-NEXT: CONSTANT, [arg0] -> [$0] (t=0, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [$0] -> [NORTH, RED], [EAST, RED], [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$2] (t=16, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=5, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: FMUL_FADD, [$8], [EAST, RED], [$2] -> [NORTH, RED] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$8], [NORTH, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [$0], [NORTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [NORTH, RED], [EAST, RED] (t=11, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=11) // RUN: mlir-neura-opt %t-kernel.mlir --view-op-graph 2>&1 | sed -n '/^digraph G {/,/^}$/p' > bicg_kernel_original.dot // RUN: dot -Tpng bicg_kernel_original.dot -o bicg_kernel_original.png @@ -1022,301 +597,3 @@ // RUN: FileCheck %s --input-file=bicg_kernel.dot -check-prefix=DOT // DOT: digraph G { -// DOT-NEXT: compound = true; -// DOT-NEXT: subgraph cluster_1 { -// DOT-NEXT: v2 [label = " ", shape = plain]; -// DOT: subgraph cluster_3 { -// DOT-NEXT: v4 [label = " ", shape = plain]; -// DOT-NEXT: label = ""; -// DOT-NEXT: subgraph cluster_5 { -// DOT-NEXT: v6 [label = " ", shape = plain]; -// DOT-NEXT: label = "func.func : ()\n\nCConv: #llvm.cconv\naccelerator: \"neura\"\narg_attrs: [{llvm.noundef}, {ll...\ndataflow_mode: \"predicate\"\nfunction_type: (i32, i32, !llvm.ptr...\nlinkage: #llvm.linkage", shape = ellipse, style = filled]; -// DOT-NEXT: v64 [fillcolor = "0.571429 1.0 1.0", label = "neura.store : ()\n\nlhs_value: 0.000000e+00 : f64", shape = ellipse, style = filled]; -// DOT-NEXT: v65 [fillcolor = "0.523810 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; -// DOT-NEXT: v66 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v67 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v68 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v69 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v70 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v71 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v72 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v75 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v76 [fillcolor = "0.428571 1.0 1.0", label = "neura.reserve : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v79 [fillcolor = "0.476190 1.0 1.0", label = "neura.phi_start : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v80 [fillcolor = "0.523810 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; -// DOT-NEXT: v81 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v82 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v83 [fillcolor = "0.523810 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; -// DOT-NEXT: v84 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v85 [fillcolor = "0.666667 1.0 1.0", label = "neura.fmul_fadd : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v86 [fillcolor = "0.571429 1.0 1.0", label = "neura.store : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v87 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v88 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v89 [fillcolor = "0.523810 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; -// DOT-NEXT: v90 [fillcolor = "0.619048 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v91 [fillcolor = "0.666667 1.0 1.0", label = "neura.fmul_fadd : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v92 [fillcolor = "0.571429 1.0 1.0", label = "neura.store : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v93 [fillcolor = "0.714286 1.0 1.0", label = "neura.add : (!neura.data)\n\nrhs_value: 1 : i64", shape = ellipse, style = filled]; -// DOT-NEXT: v94 [fillcolor = "0.095238 1.0 1.0", label = "neura.icmp : (!neura.data)\n\ncmpType: \"eq\"", shape = ellipse, style = filled]; -// DOT-NEXT: v95 [fillcolor = "0.190476 1.0 1.0", label = "neura.not : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v96 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v97 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v98 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v101 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v102 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v105 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v106 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v107 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v108 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v109 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v110 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v111 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v112 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v113 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v114 [fillcolor = "0.714286 1.0 1.0", label = "neura.add : (!neura.data)\n\nrhs_value: 1 : i64", shape = ellipse, style = filled]; -// DOT-NEXT: v115 [fillcolor = "0.095238 1.0 1.0", label = "neura.icmp : (!neura.data)\n\ncmpType: \"eq\"", shape = ellipse, style = filled]; -// DOT-NEXT: v116 [fillcolor = "0.190476 1.0 1.0", label = "neura.not : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v117 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v118 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v119 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v120 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v121 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v122 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v123 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v124 [fillcolor = "0.761905 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v125 [fillcolor = "0.142857 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v126 [fillcolor = "0.809524 1.0 1.0", label = "neura.phi : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v127 [fillcolor = "0.380952 1.0 1.0", label = "neura.return_void : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v128 [fillcolor = "0.857143 1.0 1.0", label = "neura.yield : ()\n\noperandSegmentSizes: array", shape = ellipse, style = filled]; -// DOT-NEXT: } -// DOT-NEXT: } -// DOT-NEXT: } -// DOT-NEXT: } -// DOT-NEXT: v17 -> v23 [label = "", style = solid]; -// DOT-NEXT: v23 -> v24 [label = "", style = solid]; -// DOT-NEXT: v16 -> v25 [label = "0", style = solid]; -// DOT-NEXT: v24 -> v25 [label = "1", style = solid]; -// DOT-NEXT: v19 -> v26 [label = "0", style = solid]; -// DOT-NEXT: v24 -> v26 [label = "1", style = solid]; -// DOT-NEXT: v21 -> v27 [label = "0", style = solid]; -// DOT-NEXT: v24 -> v27 [label = "1", style = solid]; -// DOT-NEXT: v18 -> v28 [label = "0", style = solid]; -// DOT-NEXT: v24 -> v28 [label = "1", style = solid]; -// DOT-NEXT: v22 -> v29 [label = "0", style = solid]; -// DOT-NEXT: v24 -> v29 [label = "1", style = solid]; -// DOT-NEXT: v24 -> v30 [label = "", style = solid]; -// DOT-NEXT: v18 -> v31 [label = "0", style = solid]; -// DOT-NEXT: v30 -> v31 [label = "1", style = solid]; -// DOT-NEXT: v20 -> v32 [label = "0", style = solid]; -// DOT-NEXT: v30 -> v32 [label = "1", style = solid]; -// DOT-NEXT: v21 -> v33 [label = "0", style = solid]; -// DOT-NEXT: v30 -> v33 [label = "1", style = solid]; -// DOT-NEXT: v31 -> v34 [label = "", style = solid]; -// DOT-NEXT: v34 -> v35 [label = "", style = solid]; -// DOT-NEXT: v35 -> v36 [label = "0", style = solid]; -// DOT-NEXT: v35 -> v36 [label = "1", style = solid]; -// DOT-NEXT: v31 -> v37 [label = "0", style = solid]; -// DOT-NEXT: v34 -> v37 [label = "1", style = solid]; -// DOT-NEXT: v32 -> v38 [label = "0", style = solid]; -// DOT-NEXT: v34 -> v38 [label = "1", style = solid]; -// DOT-NEXT: v33 -> v39 [label = "0", style = solid]; -// DOT-NEXT: v34 -> v39 [label = "1", style = solid]; -// DOT-NEXT: v37 -> v40 [label = "", style = solid]; -// DOT-NEXT: v40 -> v41 [label = "", style = solid]; -// DOT-NEXT: v38 -> v42 [label = "0", style = solid]; -// DOT-NEXT: v39 -> v42 [label = "1", style = solid]; -// DOT-NEXT: v41 -> v42 [label = "2", style = solid]; -// DOT-NEXT: v41 -> v43 [label = "", style = solid]; -// DOT-NEXT: v25 -> v44 [label = "", style = solid]; -// DOT-NEXT: v44 -> v45 [label = "", style = solid]; -// DOT-NEXT: v26 -> v46 [label = "0", style = solid]; -// DOT-NEXT: v27 -> v46 [label = "1", style = solid]; -// DOT-NEXT: v45 -> v46 [label = "2", style = solid]; -// DOT-NEXT: v28 -> v47 [label = "", style = solid]; -// DOT-NEXT: v47 -> v48 [label = "", style = solid]; -// DOT-NEXT: v28 -> v49 [label = "0", style = solid]; -// DOT-NEXT: v47 -> v49 [label = "1", style = solid]; -// DOT-NEXT: v25 -> v50 [label = "0", style = solid]; -// DOT-NEXT: v47 -> v50 [label = "1", style = solid]; -// DOT-NEXT: v29 -> v51 [label = "0", style = solid]; -// DOT-NEXT: v47 -> v51 [label = "1", style = solid]; -// DOT-NEXT: v48 -> v52 [label = "0", style = solid]; -// DOT-NEXT: v48 -> v52 [label = "1", style = solid]; -// DOT-NEXT: v49 -> v53 [label = "", style = solid]; -// DOT-NEXT: v50 -> v54 [label = "", style = solid]; -// DOT-NEXT: v53 -> v56 [label = "0", style = solid]; -// DOT-NEXT: v55 -> v56 [label = "1", style = solid]; -// DOT-NEXT: v54 -> v58 [label = "0", style = solid]; -// DOT-NEXT: v57 -> v58 [label = "1", style = solid]; -// DOT-NEXT: v51 -> v60 [label = "0", style = solid]; -// DOT-NEXT: v59 -> v60 [label = "1", style = solid]; -// DOT-NEXT: v51 -> v62 [label = "0", style = solid]; -// DOT-NEXT: v61 -> v62 [label = "1", style = solid]; -// DOT-NEXT: v62 -> v63 [label = "", style = solid]; -// DOT-NEXT: v63 -> v64 [label = "", style = solid]; -// DOT-NEXT: v62 -> v65 [label = "", style = solid]; -// DOT-NEXT: v60 -> v67 [label = "0", style = solid]; -// DOT-NEXT: v66 -> v67 [label = "1", style = solid]; -// DOT-NEXT: v56 -> v69 [label = "0", style = solid]; -// DOT-NEXT: v68 -> v69 [label = "1", style = solid]; -// DOT-NEXT: v58 -> v71 [label = "0", style = solid]; -// DOT-NEXT: v70 -> v71 [label = "1", style = solid]; -// DOT-NEXT: v63 -> v73 [label = "0", style = solid]; -// DOT-NEXT: v72 -> v73 [label = "1", style = solid]; -// DOT-NEXT: v62 -> v75 [label = "0", style = solid]; -// DOT-NEXT: v74 -> v75 [label = "1", style = solid]; -// DOT-NEXT: v65 -> v77 [label = "0", style = solid]; -// DOT-NEXT: v76 -> v77 [label = "1", style = solid]; -// DOT-NEXT: v60 -> v79 [label = "0", style = solid]; -// DOT-NEXT: v78 -> v79 [label = "1", style = solid]; -// DOT-NEXT: v79 -> v80 [label = "", style = solid]; -// DOT-NEXT: v80 -> v81 [label = "", style = solid]; -// DOT-NEXT: v77 -> v82 [label = "", style = solid]; -// DOT-NEXT: v75 -> v83 [label = "0", style = solid]; -// DOT-NEXT: v79 -> v83 [label = "1", style = solid]; -// DOT-NEXT: v83 -> v84 [label = "", style = solid]; -// DOT-NEXT: v82 -> v85 [label = "0", style = solid]; -// DOT-NEXT: v84 -> v85 [label = "1", style = solid]; -// DOT-NEXT: v81 -> v85 [label = "2", style = solid]; -// DOT-NEXT: v85 -> v86 [label = "0", style = solid]; -// DOT-NEXT: v80 -> v86 [label = "1", style = solid]; -// DOT-NEXT: v73 -> v87 [label = "", style = solid]; -// DOT-NEXT: v83 -> v88 [label = "", style = solid]; -// DOT-NEXT: v79 -> v89 [label = "", style = solid]; -// DOT-NEXT: v89 -> v90 [label = "", style = solid]; -// DOT-NEXT: v88 -> v91 [label = "0", style = solid]; -// DOT-NEXT: v90 -> v91 [label = "1", style = solid]; -// DOT-NEXT: v87 -> v91 [label = "2", style = solid]; -// DOT-NEXT: v91 -> v92 [label = "0", style = solid]; -// DOT-NEXT: v73 -> v92 [label = "1", style = solid]; -// DOT-NEXT: v79 -> v93 [label = "", style = solid]; -// DOT-NEXT: v93 -> v94 [label = "0", style = solid]; -// DOT-NEXT: v71 -> v94 [label = "1", style = solid]; -// DOT-NEXT: v94 -> v95 [label = "", style = solid]; -// DOT-NEXT: v93 -> v96 [label = "0", style = solid]; -// DOT-NEXT: v95 -> v96 [label = "1", style = solid]; -// DOT-NEXT: v96 -> v97 [label = "0", style = solid]; -// DOT-NEXT: v78 -> v97 [label = "1", style = solid]; -// DOT-NEXT: v77 -> v98 [label = "0", style = solid]; -// DOT-NEXT: v95 -> v98 [label = "1", style = solid]; -// DOT-NEXT: v98 -> v99 [label = "0", style = solid]; -// DOT-NEXT: v76 -> v99 [label = "1", style = solid]; -// DOT-NEXT: v75 -> v100 [label = "0", style = solid]; -// DOT-NEXT: v95 -> v100 [label = "1", style = solid]; -// DOT-NEXT: v100 -> v101 [label = "0", style = solid]; -// DOT-NEXT: v74 -> v101 [label = "1", style = solid]; -// DOT-NEXT: v73 -> v102 [label = "0", style = solid]; -// DOT-NEXT: v95 -> v102 [label = "1", style = solid]; -// DOT-NEXT: v102 -> v103 [label = "0", style = solid]; -// DOT-NEXT: v72 -> v103 [label = "1", style = solid]; -// DOT-NEXT: v71 -> v104 [label = "0", style = solid]; -// DOT-NEXT: v95 -> v104 [label = "1", style = solid]; -// DOT-NEXT: v104 -> v105 [label = "0", style = solid]; -// DOT-NEXT: v70 -> v105 [label = "1", style = solid]; -// DOT-NEXT: v69 -> v106 [label = "0", style = solid]; -// DOT-NEXT: v95 -> v106 [label = "1", style = solid]; -// DOT-NEXT: v106 -> v107 [label = "0", style = solid]; -// DOT-NEXT: v68 -> v107 [label = "1", style = solid]; -// DOT-NEXT: v67 -> v108 [label = "0", style = solid]; -// DOT-NEXT: v95 -> v108 [label = "1", style = solid]; -// DOT-NEXT: v108 -> v109 [label = "0", style = solid]; -// DOT-NEXT: v66 -> v109 [label = "1", style = solid]; -// DOT-NEXT: v75 -> v110 [label = "0", style = solid]; -// DOT-NEXT: v94 -> v110 [label = "1", style = solid]; -// DOT-NEXT: v69 -> v111 [label = "0", style = solid]; -// DOT-NEXT: v94 -> v111 [label = "1", style = solid]; -// DOT-NEXT: v67 -> v112 [label = "0", style = solid]; -// DOT-NEXT: v94 -> v112 [label = "1", style = solid]; -// DOT-NEXT: v71 -> v113 [label = "0", style = solid]; -// DOT-NEXT: v94 -> v113 [label = "1", style = solid]; -// DOT-NEXT: v110 -> v114 [label = "", style = solid]; -// DOT-NEXT: v114 -> v115 [label = "0", style = solid]; -// DOT-NEXT: v111 -> v115 [label = "1", style = solid]; -// DOT-NEXT: v115 -> v116 [label = "", style = solid]; -// DOT-NEXT: v114 -> v117 [label = "0", style = solid]; -// DOT-NEXT: v116 -> v117 [label = "1", style = solid]; -// DOT-NEXT: v117 -> v118 [label = "0", style = solid]; -// DOT-NEXT: v61 -> v118 [label = "1", style = solid]; -// DOT-NEXT: v112 -> v119 [label = "0", style = solid]; -// DOT-NEXT: v116 -> v119 [label = "1", style = solid]; -// DOT-NEXT: v119 -> v120 [label = "0", style = solid]; -// DOT-NEXT: v59 -> v120 [label = "1", style = solid]; -// DOT-NEXT: v113 -> v121 [label = "0", style = solid]; -// DOT-NEXT: v116 -> v121 [label = "1", style = solid]; -// DOT-NEXT: v121 -> v122 [label = "0", style = solid]; -// DOT-NEXT: v57 -> v122 [label = "1", style = solid]; -// DOT-NEXT: v111 -> v123 [label = "0", style = solid]; -// DOT-NEXT: v116 -> v123 [label = "1", style = solid]; -// DOT-NEXT: v123 -> v124 [label = "0", style = solid]; -// DOT-NEXT: v55 -> v124 [label = "1", style = solid]; -// DOT-NEXT: v115 -> v125 [label = "0", style = solid]; -// DOT-NEXT: v115 -> v125 [label = "1", style = solid]; -// DOT-NEXT: v52 -> v126 [label = "0", style = solid]; -// DOT-NEXT: v36 -> v126 [label = "1", style = solid]; -// DOT-NEXT: v125 -> v126 [label = "2", style = solid]; diff --git a/test/e2e/fft/fft_kernel.mlir b/test/e2e/fft/fft_kernel.mlir index 22930aba..caf7d092 100644 --- a/test/e2e/fft/fft_kernel.mlir +++ b/test/e2e/fft/fft_kernel.mlir @@ -22,896 +22,527 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @kernel(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 19 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 12 : i32, res_mii = 8 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 0 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 128 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = 1 : i32}> {dfg_id = 2 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %3 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 3 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %4 = neura.reserve {dfg_id = 4 : i32} : !neura.data -// MAPPING-NEXT: %5 = "neura.data_mov"(%3) {dfg_id = 33 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %6 = neura.phi_start %5, %4 {dfg_id = 38 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %7 = neura.reserve {dfg_id = 5 : i32} : !neura.data -// MAPPING-NEXT: %8 = "neura.data_mov"(%0) {dfg_id = 29 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 7 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 200 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = neura.phi_start %8, %7 {dfg_id = 34 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %10 = neura.reserve {dfg_id = 6 : i32} : !neura.data -// MAPPING-NEXT: %11 = "neura.data_mov"(%2) {dfg_id = 32 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = neura.phi_start %11, %10 {dfg_id = 37 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %13 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%1) {dfg_id = 31 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = neura.phi_start %14, %13 {dfg_id = 36 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %16 = neura.reserve {dfg_id = 8 : i32} : !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%0) {dfg_id = 30 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = neura.phi_start %17, %16 {dfg_id = 35 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %19 = "neura.data_mov"(%15) {dfg_id = 44 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = "neura.icmp"(%19) <{cmpType = "sgt"}> {dfg_id = 52 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = "neura.data_mov"(%18) {dfg_id = 41 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%20) {dfg_id = 62 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = neura.grant_predicate %21, %22 {dfg_id = 70 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%15) {dfg_id = 43 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.data_mov"(%20) {dfg_id = 61 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = neura.grant_predicate %24, %25 {dfg_id = 69 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %27 = "neura.data_mov"(%12) {dfg_id = 46 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 29 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%20) {dfg_id = 60 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 176 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 176 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 176 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = neura.grant_predicate %27, %28 {dfg_id = 68 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %30 = "neura.data_mov"(%6) {dfg_id = 48 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%20) {dfg_id = 59 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = neura.grant_predicate %30, %31 {dfg_id = 67 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %33 = "neura.data_mov"(%20) {dfg_id = 58 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %34 = "neura.not"(%33) {dfg_id = 66 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.data_mov"(%6) {dfg_id = 47 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 8001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 8001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 8001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 8001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 8001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 8001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 8001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 8001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 8001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 8001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 8001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%34) {dfg_id = 75 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %37 = neura.grant_predicate %35, %36 {dfg_id = 85 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %38 = "neura.data_mov"(%23) {dfg_id = 82 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %39 = neura.sext %38 {dfg_id = 92 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %40 = "neura.data_mov"(%26) {dfg_id = 81 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %41 = neura.zext %40 {dfg_id = 91 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %42 = "neura.data_mov"(%29) {dfg_id = 78 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %43 = neura.zext %42 {dfg_id = 88 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %44 = "neura.data_mov"(%26) {dfg_id = 80 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %45 = neura.zext %44 {dfg_id = 90 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %46 = neura.reserve {dfg_id = 9 : i32} : !neura.data -// MAPPING-NEXT: %47 = "neura.data_mov"(%43) {dfg_id = 105 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %48 = neura.phi_start %47, %46 {dfg_id = 120 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %49 = neura.reserve {dfg_id = 10 : i32} : !neura.data -// MAPPING-NEXT: %50 = "neura.data_mov"(%45) {dfg_id = 108 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %51 = neura.phi_start %50, %49 {dfg_id = 122 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %52 = neura.reserve {dfg_id = 11 : i32} : !neura.data -// MAPPING-NEXT: %53 = "neura.data_mov"(%32) {dfg_id = 77 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %54 = neura.phi_start %53, %52 {dfg_id = 87 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %55 = neura.reserve {dfg_id = 12 : i32} : !neura.data -// MAPPING-NEXT: %56 = "neura.data_mov"(%26) {dfg_id = 79 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %57 = neura.phi_start %56, %55 {dfg_id = 89 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %58 = neura.reserve {dfg_id = 13 : i32} : !neura.data -// MAPPING-NEXT: %59 = "neura.data_mov"(%41) {dfg_id = 109 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %60 = neura.phi_start %59, %58 {dfg_id = 123 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %61 = neura.reserve {dfg_id = 14 : i32} : !neura.data -// MAPPING-NEXT: %62 = "neura.data_mov"(%39) {dfg_id = 110 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %63 = neura.phi_start %62, %61 {dfg_id = 124 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %64 = neura.reserve {dfg_id = 15 : i32} : !neura.data -// MAPPING-NEXT: %65 = "neura.data_mov"(%32) {dfg_id = 76 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %66 = neura.phi_start %65, %64 {dfg_id = 86 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %67 = "neura.data_mov"(%66) {dfg_id = 102 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 321 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 321 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 321 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 321 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 321 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %68 = "neura.data_mov"(%63) {dfg_id = 144 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %69 = "neura.add"(%67, %68) {dfg_id = 151 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 166 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %71 = "neura.gep"(%70) <{operandSegmentSizes = array}> {dfg_id = 171 : i32, lhs_value = "%arg2", mapping_locs = [{id = 11 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.data_mov"(%71) {dfg_id = 183 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 22 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %73 = "neura.load"(%72) {dfg_id = 195 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %74 = "neura.data_mov"(%69) {dfg_id = 165 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %75 = "neura.gep"(%74) <{operandSegmentSizes = array}> {dfg_id = 170 : i32, lhs_value = "%arg3", mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %76 = "neura.data_mov"(%75) {dfg_id = 182 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 19 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %77 = "neura.load"(%76) {dfg_id = 194 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %78 = "neura.data_mov"(%66) {dfg_id = 101 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %79 = "neura.shl"(%78) {dfg_id = 117 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = "neura.data_mov"(%79) {dfg_id = 131 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%60) {dfg_id = 142 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.mul"(%80, %81) {dfg_id = 149 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %83 = "neura.data_mov"(%82) {dfg_id = 162 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %84 = "neura.cast"(%83) <{cast_type = "trunc"}> {dfg_id = 169 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %85 = "neura.data_mov"(%57) {dfg_id = 107 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%84) {dfg_id = 181 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %87 = "neura.add"(%85, %86) {dfg_id = 193 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %88 = "neura.data_mov"(%87) {dfg_id = 219 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %89 = neura.zext %88 {dfg_id = 233 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %90 = "neura.data_mov"(%82) {dfg_id = 161 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 416 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 416 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 416 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 416 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %91 = "neura.and"(%90) {dfg_id = 168 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 3 : i32}], rhs_value = 4294967294 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %92 = neura.reserve {dfg_id = 16 : i32} : !neura.data -// MAPPING-NEXT: %93 = "neura.data_mov"(%54) {dfg_id = 104 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 322 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 322 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 322 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 322 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %94 = neura.phi_start %93, %92 {dfg_id = 119 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %95 = neura.reserve {dfg_id = 17 : i32} : !neura.data -// MAPPING-NEXT: %96 = "neura.data_mov"(%57) {dfg_id = 106 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 169 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 169 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 169 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 169 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %97 = neura.phi_start %96, %95 {dfg_id = 121 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %98 = neura.reserve {dfg_id = 18 : i32} : !neura.data -// MAPPING-NEXT: %99 = "neura.data_mov"(%60) {dfg_id = 141 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %100 = neura.phi_start %99, %98 {dfg_id = 148 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %101 = neura.reserve {dfg_id = 19 : i32} : !neura.data -// MAPPING-NEXT: %102 = "neura.data_mov"(%63) {dfg_id = 143 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 193 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %103 = neura.phi_start %102, %101 {dfg_id = 150 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %104 = neura.reserve {dfg_id = 20 : i32} : !neura.data -// MAPPING-NEXT: %105 = "neura.data_mov"(%48) {dfg_id = 137 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %106 = neura.phi_start %105, %104 {dfg_id = 146 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %107 = neura.reserve {dfg_id = 21 : i32} : !neura.data -// MAPPING-NEXT: %108 = "neura.data_mov"(%66) {dfg_id = 100 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 4 : i32}, {id = 297 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 297 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}, {id = 297 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 297 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 297 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 297 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %109 = neura.phi_start %108, %107 {dfg_id = 116 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %110 = neura.reserve {dfg_id = 22 : i32} : !neura.data -// MAPPING-NEXT: %111 = "neura.data_mov"(%51) {dfg_id = 140 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %112 = neura.phi_start %111, %110 {dfg_id = 147 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %113 = neura.reserve {dfg_id = 23 : i32} : !neura.data -// MAPPING-NEXT: %114 = "neura.data_mov"(%91) {dfg_id = 180 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %115 = neura.phi_start %114, %113 {dfg_id = 192 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %116 = neura.reserve {dfg_id = 24 : i32} : !neura.data -// MAPPING-NEXT: %117 = "neura.data_mov"(%77) {dfg_id = 220 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %118 = neura.phi_start %117, %116 {dfg_id = 234 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %119 = neura.reserve {dfg_id = 25 : i32} : !neura.data -// MAPPING-NEXT: %120 = "neura.data_mov"(%73) {dfg_id = 221 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %121 = neura.phi_start %120, %119 {dfg_id = 235 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %122 = neura.reserve {dfg_id = 26 : i32} : !neura.data -// MAPPING-NEXT: %123 = "neura.data_mov"(%89) {dfg_id = 249 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %124 = neura.phi_start %123, %122 {dfg_id = 259 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %125 = neura.reserve {dfg_id = 27 : i32} : !neura.data -// MAPPING-NEXT: %126 = "neura.data_mov"(%54) {dfg_id = 103 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %127 = neura.phi_start %126, %125 {dfg_id = 118 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %128 = "neura.data_mov"(%127) {dfg_id = 134 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 33 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %129 = "neura.data_mov"(%124) {dfg_id = 269 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %130 = "neura.add"(%128, %129) {dfg_id = 277 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %131 = "neura.data_mov"(%130) {dfg_id = 292 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %132 = "neura.gep"(%131) <{operandSegmentSizes = array}> {dfg_id = 302 : i32, lhs_value = "%arg0", mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %133 = "neura.data_mov"(%132) {dfg_id = 314 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %134 = "neura.load"(%133) {dfg_id = 317 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %135 = "neura.data_mov"(%134) {dfg_id = 322 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 7 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %136 = "neura.data_mov"(%121) {dfg_id = 255 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %137 = "neura.mul"(%135, %136) {dfg_id = 326 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %138 = "neura.data_mov"(%130) {dfg_id = 291 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %139 = "neura.gep"(%138) <{operandSegmentSizes = array}> {dfg_id = 301 : i32, lhs_value = "%arg1", mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %140 = "neura.data_mov"(%139) {dfg_id = 312 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 22 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %141 = "neura.load"(%140) {dfg_id = 316 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %142 = "neura.data_mov"(%141) {dfg_id = 320 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %143 = "neura.data_mov"(%118) {dfg_id = 252 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %144 = "neura.mul"(%142, %143) {dfg_id = 324 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %145 = "neura.data_mov"(%137) {dfg_id = 330 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 192 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %146 = "neura.data_mov"(%144) {dfg_id = 328 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %147 = "neura.sub"(%145, %146) {dfg_id = 332 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %148 = "neura.data_mov"(%134) {dfg_id = 321 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 1000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %149 = "neura.data_mov"(%118) {dfg_id = 251 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %150 = "neura.mul"(%148, %149) {dfg_id = 325 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %151 = "neura.data_mov"(%141) {dfg_id = 319 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %152 = "neura.data_mov"(%121) {dfg_id = 254 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %153 = "neura.mul"(%151, %152) {dfg_id = 323 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %154 = "neura.data_mov"(%153) {dfg_id = 327 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %155 = "neura.data_mov"(%150) {dfg_id = 329 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %156 = "neura.add"(%154, %155) {dfg_id = 331 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %157 = "neura.data_mov"(%127) {dfg_id = 133 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 417 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 417 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 417 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %158 = "neura.data_mov"(%115) {dfg_id = 218 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %159 = "neura.add"(%157, %158) {dfg_id = 232 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %160 = "neura.data_mov"(%159) {dfg_id = 248 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %161 = "neura.gep"(%160) <{operandSegmentSizes = array}> {dfg_id = 258 : i32, lhs_value = "%arg0", mapping_locs = [{id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %162 = "neura.data_mov"(%161) {dfg_id = 267 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 12000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %163 = "neura.load"(%162) {dfg_id = 275 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %164 = "neura.data_mov"(%163) {dfg_id = 289 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 41 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 448 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %165 = "neura.data_mov"(%147) {dfg_id = 336 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 34 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %166 = "neura.sub"(%164, %165) {dfg_id = 340 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %167 = "neura.data_mov"(%166) {dfg_id = 344 : i32, mapping_locs = [{id = 45 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %168 = "neura.data_mov"(%132) {dfg_id = 313 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 2001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 2001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 2001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 2001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 2001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 2001 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 2001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 2001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%167, %168) {dfg_id = 348 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %169 = "neura.data_mov"(%163) {dfg_id = 288 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 24 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 29 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %170 = "neura.data_mov"(%147) {dfg_id = 335 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 160 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %171 = "neura.add"(%169, %170) {dfg_id = 339 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 343 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 266 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8008 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 8008 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%172, %173) {dfg_id = 347 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %174 = "neura.data_mov"(%159) {dfg_id = 247 : i32, mapping_locs = [{id = 416 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %175 = "neura.gep"(%174) <{operandSegmentSizes = array}> {dfg_id = 257 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %176 = "neura.data_mov"(%175) {dfg_id = 265 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %177 = "neura.load"(%176) {dfg_id = 274 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %178 = "neura.data_mov"(%177) {dfg_id = 287 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 25 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 4000 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 4000 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %179 = "neura.data_mov"(%156) {dfg_id = 334 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 1 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %180 = "neura.sub"(%178, %179) {dfg_id = 338 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 342 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %182 = "neura.data_mov"(%139) {dfg_id = 311 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 304 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 27 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 8002 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 8002 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 8002 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 8002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%181, %182) {dfg_id = 346 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %183 = "neura.data_mov"(%177) {dfg_id = 286 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 25 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 11 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %184 = "neura.data_mov"(%156) {dfg_id = 333 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %185 = "neura.add"(%183, %184) {dfg_id = 337 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %186 = "neura.data_mov"(%185) {dfg_id = 341 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %187 = "neura.data_mov"(%175) {dfg_id = 264 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 29 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 15 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 1000 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 2 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%186, %187) {dfg_id = 345 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %188 = "neura.data_mov"(%127) {dfg_id = 132 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %189 = "neura.add"(%188) {dfg_id = 145 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %190 = "neura.data_mov"(%189) {dfg_id = 153 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %191 = "neura.data_mov"(%112) {dfg_id = 158 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %192 = "neura.icmp"(%190, %191) <{cmpType = "eq"}> {dfg_id = 167 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %193 = "neura.data_mov"(%192) {dfg_id = 179 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %194 = "neura.not"(%193) {dfg_id = 191 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %195 = "neura.data_mov"(%189) {dfg_id = 152 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %196 = "neura.data_mov"(%194) {dfg_id = 216 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %197 = neura.grant_predicate %195, %196 {dfg_id = 230 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %197 -> %125 {dfg_id = 245 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 298 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 298 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 298 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 298 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 298 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 298 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 298 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 298 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 298 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 298 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 298 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 298 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 298 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 298 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %198 = "neura.data_mov"(%124) {dfg_id = 268 : i32, mapping_locs = [{id = 204 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 10 : i32}, {id = 204 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 11 : i32}, {id = 204 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 12 : i32}, {id = 204 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 13 : i32}, {id = 204 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 14 : i32}, {id = 204 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 15 : i32}, {id = 204 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 16 : i32}, {id = 204 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 17 : i32}, {id = 204 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 18 : i32}, {id = 204 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 19 : i32}, {id = 204 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %199 = "neura.data_mov"(%194) {dfg_id = 215 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 33 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 209 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 209 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}, {id = 209 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}, {id = 209 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 209 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 209 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %200 = neura.grant_predicate %198, %199 {dfg_id = 276 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %200 -> %122 {dfg_id = 290 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 195 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 195 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 195 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 195 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 195 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 195 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}, {id = 195 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %201 = "neura.data_mov"(%121) {dfg_id = 253 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 224 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 224 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %202 = "neura.data_mov"(%194) {dfg_id = 214 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 32 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 36 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 232 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %203 = neura.grant_predicate %201, %202 {dfg_id = 261 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %203 -> %119 {dfg_id = 271 : i32, mapping_locs = [{id = 225 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 225 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 225 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 225 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 225 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 225 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 225 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 225 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 225 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}, {id = 225 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 26 : i32}, {id = 225 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 27 : i32}, {id = 225 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 28 : i32}, {id = 225 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 29 : i32}, {id = 225 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 30 : i32}, {id = 225 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 31 : i32}, {id = 225 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %204 = "neura.data_mov"(%118) {dfg_id = 250 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 2000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 2000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %205 = "neura.data_mov"(%194) {dfg_id = 213 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 33 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 19 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 2008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %206 = neura.grant_predicate %204, %205 {dfg_id = 260 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %206 -> %116 {dfg_id = 270 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 2008 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 2008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 2008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 2008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 2008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}, {id = 2008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 29 : i32}, {id = 2008 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 30 : i32}, {id = 2008 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 31 : i32}, {id = 2008 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %207 = "neura.data_mov"(%115) {dfg_id = 217 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 424 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 424 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 424 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 424 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 424 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %208 = "neura.data_mov"(%194) {dfg_id = 212 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 30 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 417 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 417 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 417 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 417 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = neura.grant_predicate %207, %208 {dfg_id = 231 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %209 -> %113 {dfg_id = 246 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 299 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 19 : i32}, {id = 299 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 20 : i32}, {id = 299 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 21 : i32}, {id = 299 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 22 : i32}, {id = 299 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 23 : i32}, {id = 299 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 24 : i32}, {id = 299 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 25 : i32}, {id = 299 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 299 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}, {id = 299 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 28 : i32}, {id = 299 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 29 : i32}, {id = 299 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 30 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %210 = "neura.data_mov"(%112) {dfg_id = 157 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %211 = "neura.data_mov"(%194) {dfg_id = 211 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %212 = neura.grant_predicate %210, %211 {dfg_id = 229 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %212 -> %110 {dfg_id = 244 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 4008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 4008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 4008 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 4008 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %213 = "neura.data_mov"(%109) {dfg_id = 130 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 8016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 8016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 8016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 8016 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 8016 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 8016 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 8016 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %214 = "neura.data_mov"(%194) {dfg_id = 210 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 8009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 8009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 8009 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 8009 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 8009 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 8009 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %215 = neura.grant_predicate %213, %214 {dfg_id = 228 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %215 -> %107 {dfg_id = 243 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 305 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 305 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 305 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}, {id = 305 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 23 : i32}, {id = 305 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 24 : i32}, {id = 305 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 25 : i32}, {id = 305 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 26 : i32}, {id = 305 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 27 : i32}, {id = 305 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 28 : i32}, {id = 305 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %216 = "neura.data_mov"(%106) {dfg_id = 155 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 4001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 4001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 4001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %217 = "neura.data_mov"(%194) {dfg_id = 209 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 4016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 4016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 4016 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 4016 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 4016 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %218 = neura.grant_predicate %216, %217 {dfg_id = 227 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %218 -> %104 {dfg_id = 242 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 172 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 19 : i32}, {id = 172 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 20 : i32}, {id = 172 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 21 : i32}, {id = 172 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 22 : i32}, {id = 172 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 23 : i32}, {id = 172 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 24 : i32}, {id = 172 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 25 : i32}, {id = 172 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 26 : i32}, {id = 172 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 27 : i32}, {id = 172 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 28 : i32}, {id = 172 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 29 : i32}, {id = 172 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 30 : i32}, {id = 172 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %219 = "neura.data_mov"(%103) {dfg_id = 164 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %220 = "neura.data_mov"(%194) {dfg_id = 208 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 33 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 202 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 202 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 202 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 202 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 202 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %221 = neura.grant_predicate %219, %220 {dfg_id = 226 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %221 -> %101 {dfg_id = 241 : i32, mapping_locs = [{id = 203 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 20 : i32}, {id = 203 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 21 : i32}, {id = 203 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 22 : i32}, {id = 203 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 23 : i32}, {id = 203 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 24 : i32}, {id = 203 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 25 : i32}, {id = 203 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 203 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}, {id = 203 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 28 : i32}, {id = 203 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 29 : i32}, {id = 203 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 30 : i32}, {id = 203 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 31 : i32}, {id = 203 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 32 : i32}, {id = 203 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 33 : i32}, {id = 203 : i32, index_per_ii = 15 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 34 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %222 = "neura.data_mov"(%100) {dfg_id = 160 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %223 = "neura.data_mov"(%194) {dfg_id = 207 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 4000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 4000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 4000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %224 = neura.grant_predicate %222, %223 {dfg_id = 225 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %224 -> %98 {dfg_id = 240 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 177 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 177 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 177 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 177 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 177 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}, {id = 177 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 23 : i32}, {id = 177 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 24 : i32}, {id = 177 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 25 : i32}, {id = 177 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 26 : i32}, {id = 177 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 27 : i32}, {id = 177 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 28 : i32}, {id = 177 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 29 : i32}, {id = 177 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 30 : i32}, {id = 177 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 31 : i32}, {id = 177 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 32 : i32}, {id = 177 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 33 : i32}, {id = 177 : i32, index_per_ii = 15 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 34 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %225 = "neura.data_mov"(%97) {dfg_id = 139 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 163 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 163 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 163 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 163 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %226 = "neura.data_mov"(%194) {dfg_id = 206 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 29 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 171 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 14 : i32}, {id = 171 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 15 : i32}, {id = 171 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 16 : i32}, {id = 171 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 17 : i32}, {id = 171 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 18 : i32}, {id = 171 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 224 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %227 -> %95 {dfg_id = 239 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 163 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 163 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 163 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 163 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 163 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 163 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 163 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}, {id = 163 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 28 : i32}, {id = 163 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 29 : i32}, {id = 163 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 30 : i32}, {id = 163 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 31 : i32}, {id = 163 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 32 : i32}, {id = 163 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 33 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %228 = "neura.data_mov"(%94) {dfg_id = 136 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 8001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 8001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %229 = "neura.data_mov"(%194) {dfg_id = 205 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 8009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 8009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 8009 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 8009 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 8009 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %230 = neura.grant_predicate %228, %229 {dfg_id = 223 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %230 -> %92 {dfg_id = 238 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 28 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 330 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 330 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 330 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 330 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 330 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 330 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 330 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 330 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}, {id = 330 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 28 : i32}, {id = 330 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 29 : i32}, {id = 330 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 30 : i32}, {id = 330 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %231 = "neura.data_mov"(%109) {dfg_id = 129 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %232 = "neura.data_mov"(%192) {dfg_id = 178 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %233 = neura.grant_predicate %231, %232 {dfg_id = 190 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %234 = "neura.data_mov"(%106) {dfg_id = 154 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %235 = "neura.data_mov"(%192) {dfg_id = 177 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %236 = neura.grant_predicate %234, %235 {dfg_id = 189 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %237 = "neura.data_mov"(%103) {dfg_id = 163 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 16 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %238 = "neura.data_mov"(%192) {dfg_id = 176 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 289 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 289 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %239 = neura.grant_predicate %237, %238 {dfg_id = 188 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %240 = "neura.data_mov"(%100) {dfg_id = 159 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %241 = "neura.data_mov"(%192) {dfg_id = 175 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %242 = neura.grant_predicate %240, %241 {dfg_id = 187 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %243 = "neura.data_mov"(%97) {dfg_id = 138 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %244 = "neura.data_mov"(%192) {dfg_id = 174 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 4002 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %245 = neura.grant_predicate %243, %244 {dfg_id = 186 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %246 = "neura.data_mov"(%94) {dfg_id = 135 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %247 = "neura.data_mov"(%192) {dfg_id = 173 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 28 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %248 = neura.grant_predicate %246, %247 {dfg_id = 185 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %249 = "neura.data_mov"(%112) {dfg_id = 156 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %250 = "neura.data_mov"(%192) {dfg_id = 172 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %251 = neura.grant_predicate %249, %250 {dfg_id = 184 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %252 = "neura.data_mov"(%233) {dfg_id = 204 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %253 = "neura.add"(%252) {dfg_id = 222 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %254 = "neura.data_mov"(%253) {dfg_id = 237 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %255 = "neura.data_mov"(%236) {dfg_id = 203 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %256 = "neura.icmp"(%254, %255) <{cmpType = "eq"}> {dfg_id = 256 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %257 = "neura.data_mov"(%256) {dfg_id = 263 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %258 = "neura.not"(%257) {dfg_id = 273 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %259 = "neura.data_mov"(%253) {dfg_id = 236 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %260 = "neura.data_mov"(%258) {dfg_id = 285 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %261 = neura.grant_predicate %259, %260 {dfg_id = 300 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %261 -> %64 {dfg_id = 310 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 297 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 297 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 297 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 297 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 297 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %262 = "neura.data_mov"(%239) {dfg_id = 201 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %263 = "neura.data_mov"(%258) {dfg_id = 284 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 416 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 416 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %264 = neura.grant_predicate %262, %263 {dfg_id = 299 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %264 -> %61 {dfg_id = 309 : i32, mapping_locs = [{id = 41 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 45 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 201 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 201 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 201 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 201 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 201 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}, {id = 201 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %265 = "neura.data_mov"(%242) {dfg_id = 200 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 1000 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %266 = "neura.data_mov"(%258) {dfg_id = 283 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 15 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %267 = neura.grant_predicate %265, %266 {dfg_id = 298 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %267 -> %58 {dfg_id = 308 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 169 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 169 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 169 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 169 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %268 = "neura.data_mov"(%245) {dfg_id = 199 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 4002 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 4002 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %269 = "neura.data_mov"(%258) {dfg_id = 282 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 13 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 4016 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 4016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %270 = neura.grant_predicate %268, %269 {dfg_id = 297 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %270 -> %55 {dfg_id = 307 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 184 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 184 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 184 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 184 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %271 = "neura.data_mov"(%248) {dfg_id = 198 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %272 = "neura.data_mov"(%258) {dfg_id = 281 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %273 = neura.grant_predicate %271, %272 {dfg_id = 296 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %273 -> %52 {dfg_id = 306 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 304 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 304 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 304 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 304 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 304 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 304 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 304 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %274 = "neura.data_mov"(%251) {dfg_id = 196 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 8000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 8000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 8000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 8000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %275 = "neura.data_mov"(%258) {dfg_id = 280 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %276 = neura.grant_predicate %274, %275 {dfg_id = 295 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING: func.func @kernel(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 19 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 12 : i32, res_mii = 8 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 0 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 128 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = 1 : i32}> {dfg_id = 2 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %3 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 3 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %4 = neura.reserve {dfg_id = 4 : i32} : !neura.data +// MAPPING-NEXT: %5 = "neura.data_mov"(%3) {dfg_id = 33 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %6 = neura.phi_start %5, %4 {dfg_id = 38 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %7 = neura.reserve {dfg_id = 5 : i32} : !neura.data +// MAPPING-NEXT: %8 = "neura.data_mov"(%0) {dfg_id = 29 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 7 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 200 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = neura.phi_start %8, %7 {dfg_id = 34 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %10 = neura.reserve {dfg_id = 6 : i32} : !neura.data +// MAPPING-NEXT: %11 = "neura.data_mov"(%2) {dfg_id = 32 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = neura.phi_start %11, %10 {dfg_id = 37 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %13 = neura.reserve {dfg_id = 7 : i32} : !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%1) {dfg_id = 31 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = neura.phi_start %14, %13 {dfg_id = 36 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %16 = neura.reserve {dfg_id = 8 : i32} : !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%0) {dfg_id = 30 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = neura.phi_start %17, %16 {dfg_id = 35 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %19 = "neura.data_mov"(%15) {dfg_id = 44 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = "neura.icmp"(%19) <{cmpType = "sgt"}> {dfg_id = 52 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = "neura.data_mov"(%18) {dfg_id = 41 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%20) {dfg_id = 62 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 192 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = neura.grant_predicate %21, %22 {dfg_id = 70 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%15) {dfg_id = 43 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.data_mov"(%20) {dfg_id = 61 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = neura.grant_predicate %24, %25 {dfg_id = 69 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %27 = "neura.data_mov"(%12) {dfg_id = 46 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 29 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%20) {dfg_id = 60 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 176 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 176 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 176 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = neura.grant_predicate %27, %28 {dfg_id = 68 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %30 = "neura.data_mov"(%6) {dfg_id = 48 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%20) {dfg_id = 59 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = neura.grant_predicate %30, %31 {dfg_id = 67 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %33 = "neura.data_mov"(%20) {dfg_id = 58 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 3 : i32}, {id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %34 = "neura.not"(%33) {dfg_id = 66 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.data_mov"(%6) {dfg_id = 47 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 8001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 8001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 8001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 8001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 8001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 8001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 8001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 8001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 8001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 8001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 8001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%34) {dfg_id = 75 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %37 = neura.grant_predicate %35, %36 {dfg_id = 85 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %38 = "neura.data_mov"(%23) {dfg_id = 82 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %39 = neura.sext %38 {dfg_id = 92 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %40 = "neura.data_mov"(%26) {dfg_id = 81 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %41 = neura.zext %40 {dfg_id = 91 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %42 = "neura.data_mov"(%29) {dfg_id = 78 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %43 = neura.zext %42 {dfg_id = 88 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %44 = "neura.data_mov"(%26) {dfg_id = 80 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %45 = neura.zext %44 {dfg_id = 90 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %46 = neura.reserve {dfg_id = 9 : i32} : !neura.data +// MAPPING-NEXT: %47 = "neura.data_mov"(%43) {dfg_id = 105 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %48 = neura.phi_start %47, %46 {dfg_id = 120 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %49 = neura.reserve {dfg_id = 10 : i32} : !neura.data +// MAPPING-NEXT: %50 = "neura.data_mov"(%45) {dfg_id = 108 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %51 = neura.phi_start %50, %49 {dfg_id = 122 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %52 = neura.reserve {dfg_id = 11 : i32} : !neura.data +// MAPPING-NEXT: %53 = "neura.data_mov"(%32) {dfg_id = 77 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %54 = neura.phi_start %53, %52 {dfg_id = 87 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %55 = neura.reserve {dfg_id = 12 : i32} : !neura.data +// MAPPING-NEXT: %56 = "neura.data_mov"(%26) {dfg_id = 79 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %57 = neura.phi_start %56, %55 {dfg_id = 89 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %58 = neura.reserve {dfg_id = 13 : i32} : !neura.data +// MAPPING-NEXT: %59 = "neura.data_mov"(%41) {dfg_id = 109 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %60 = neura.phi_start %59, %58 {dfg_id = 123 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %61 = neura.reserve {dfg_id = 14 : i32} : !neura.data +// MAPPING-NEXT: %62 = "neura.data_mov"(%39) {dfg_id = 110 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %63 = neura.phi_start %62, %61 {dfg_id = 124 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %64 = neura.reserve {dfg_id = 15 : i32} : !neura.data +// MAPPING-NEXT: %65 = "neura.data_mov"(%32) {dfg_id = 76 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %66 = neura.phi_start %65, %64 {dfg_id = 86 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %67 = "neura.data_mov"(%66) {dfg_id = 102 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 321 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 321 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 321 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 321 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 321 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %68 = "neura.data_mov"(%63) {dfg_id = 144 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %69 = "neura.add"(%67, %68) {dfg_id = 151 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 166 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %71 = "neura.gep"(%70) <{operandSegmentSizes = array}> {dfg_id = 171 : i32, lhs_value = "%arg2", mapping_locs = [{id = 11 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.data_mov"(%71) {dfg_id = 183 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 22 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %73 = "neura.load"(%72) {dfg_id = 195 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %74 = "neura.data_mov"(%69) {dfg_id = 165 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %75 = "neura.gep"(%74) <{operandSegmentSizes = array}> {dfg_id = 170 : i32, lhs_value = "%arg3", mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %76 = "neura.data_mov"(%75) {dfg_id = 182 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 19 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %77 = "neura.load"(%76) {dfg_id = 194 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %78 = "neura.data_mov"(%66) {dfg_id = 101 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %79 = "neura.shl"(%78) {dfg_id = 117 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = "neura.data_mov"(%79) {dfg_id = 131 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%60) {dfg_id = 142 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.mul"(%80, %81) {dfg_id = 149 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %83 = "neura.data_mov"(%82) {dfg_id = 162 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %84 = "neura.cast"(%83) <{cast_type = "trunc"}> {dfg_id = 169 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %85 = "neura.data_mov"(%57) {dfg_id = 107 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%84) {dfg_id = 181 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %87 = "neura.add"(%85, %86) {dfg_id = 193 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %88 = "neura.data_mov"(%87) {dfg_id = 219 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %89 = neura.zext %88 {dfg_id = 233 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %90 = "neura.data_mov"(%82) {dfg_id = 161 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 416 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 416 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 416 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 416 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %91 = "neura.and"(%90) {dfg_id = 168 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 3 : i32}], rhs_value = 4294967294 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %92 = neura.reserve {dfg_id = 16 : i32} : !neura.data +// MAPPING-NEXT: %93 = "neura.data_mov"(%54) {dfg_id = 104 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 322 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 322 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 322 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 322 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %94 = neura.phi_start %93, %92 {dfg_id = 119 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %95 = neura.reserve {dfg_id = 17 : i32} : !neura.data +// MAPPING-NEXT: %96 = "neura.data_mov"(%57) {dfg_id = 106 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 169 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 169 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 169 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 169 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %97 = neura.phi_start %96, %95 {dfg_id = 121 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %98 = neura.reserve {dfg_id = 18 : i32} : !neura.data +// MAPPING-NEXT: %99 = "neura.data_mov"(%60) {dfg_id = 141 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 161 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %100 = neura.phi_start %99, %98 {dfg_id = 148 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %101 = neura.reserve {dfg_id = 19 : i32} : !neura.data +// MAPPING-NEXT: %102 = "neura.data_mov"(%63) {dfg_id = 143 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 193 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %103 = neura.phi_start %102, %101 {dfg_id = 150 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %104 = neura.reserve {dfg_id = 20 : i32} : !neura.data +// MAPPING-NEXT: %105 = "neura.data_mov"(%48) {dfg_id = 137 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %106 = neura.phi_start %105, %104 {dfg_id = 146 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %107 = neura.reserve {dfg_id = 21 : i32} : !neura.data +// MAPPING-NEXT: %108 = "neura.data_mov"(%66) {dfg_id = 100 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 4 : i32}, {id = 297 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 297 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}, {id = 297 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 297 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 297 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 297 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %109 = neura.phi_start %108, %107 {dfg_id = 116 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %110 = neura.reserve {dfg_id = 22 : i32} : !neura.data +// MAPPING-NEXT: %111 = "neura.data_mov"(%51) {dfg_id = 140 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %112 = neura.phi_start %111, %110 {dfg_id = 147 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %113 = neura.reserve {dfg_id = 23 : i32} : !neura.data +// MAPPING-NEXT: %114 = "neura.data_mov"(%91) {dfg_id = 180 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %115 = neura.phi_start %114, %113 {dfg_id = 192 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %116 = neura.reserve {dfg_id = 24 : i32} : !neura.data +// MAPPING-NEXT: %117 = "neura.data_mov"(%77) {dfg_id = 220 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %118 = neura.phi_start %117, %116 {dfg_id = 234 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %119 = neura.reserve {dfg_id = 25 : i32} : !neura.data +// MAPPING-NEXT: %120 = "neura.data_mov"(%73) {dfg_id = 221 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %121 = neura.phi_start %120, %119 {dfg_id = 235 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %122 = neura.reserve {dfg_id = 26 : i32} : !neura.data +// MAPPING-NEXT: %123 = "neura.data_mov"(%89) {dfg_id = 249 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %124 = neura.phi_start %123, %122 {dfg_id = 259 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %125 = neura.reserve {dfg_id = 27 : i32} : !neura.data +// MAPPING-NEXT: %126 = "neura.data_mov"(%54) {dfg_id = 103 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %127 = neura.phi_start %126, %125 {dfg_id = 118 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %128 = "neura.data_mov"(%127) {dfg_id = 134 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 33 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %129 = "neura.data_mov"(%124) {dfg_id = 269 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %130 = "neura.add"(%128, %129) {dfg_id = 277 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %131 = "neura.data_mov"(%130) {dfg_id = 292 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %132 = "neura.gep"(%131) <{operandSegmentSizes = array}> {dfg_id = 302 : i32, lhs_value = "%arg0", mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %133 = "neura.data_mov"(%132) {dfg_id = 314 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %134 = "neura.load"(%133) {dfg_id = 317 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %135 = "neura.data_mov"(%134) {dfg_id = 322 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 7 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %136 = "neura.data_mov"(%121) {dfg_id = 255 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %137 = "neura.mul"(%135, %136) {dfg_id = 326 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %138 = "neura.data_mov"(%130) {dfg_id = 291 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %139 = "neura.gep"(%138) <{operandSegmentSizes = array}> {dfg_id = 301 : i32, lhs_value = "%arg1", mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %140 = "neura.data_mov"(%139) {dfg_id = 312 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 22 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %141 = "neura.load"(%140) {dfg_id = 316 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %142 = "neura.data_mov"(%141) {dfg_id = 320 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %143 = "neura.data_mov"(%118) {dfg_id = 252 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %144 = "neura.mul"(%142, %143) {dfg_id = 324 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %145 = "neura.data_mov"(%137) {dfg_id = 330 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 192 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %146 = "neura.data_mov"(%144) {dfg_id = 328 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %147 = "neura.sub"(%145, %146) {dfg_id = 332 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %148 = "neura.data_mov"(%134) {dfg_id = 321 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 1000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %149 = "neura.data_mov"(%118) {dfg_id = 251 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %150 = "neura.mul"(%148, %149) {dfg_id = 325 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %151 = "neura.data_mov"(%141) {dfg_id = 319 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %152 = "neura.data_mov"(%121) {dfg_id = 254 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %153 = "neura.mul"(%151, %152) {dfg_id = 323 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %154 = "neura.data_mov"(%153) {dfg_id = 327 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %155 = "neura.data_mov"(%150) {dfg_id = 329 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %156 = "neura.add"(%154, %155) {dfg_id = 331 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %157 = "neura.data_mov"(%127) {dfg_id = 133 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 417 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 417 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 417 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %158 = "neura.data_mov"(%115) {dfg_id = 218 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %159 = "neura.add"(%157, %158) {dfg_id = 232 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %160 = "neura.data_mov"(%159) {dfg_id = 248 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %161 = "neura.gep"(%160) <{operandSegmentSizes = array}> {dfg_id = 258 : i32, lhs_value = "%arg0", mapping_locs = [{id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %162 = "neura.data_mov"(%161) {dfg_id = 267 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 12000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %163 = "neura.load"(%162) {dfg_id = 275 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %164 = "neura.data_mov"(%163) {dfg_id = 289 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 41 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 448 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %165 = "neura.data_mov"(%147) {dfg_id = 336 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 34 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %166 = "neura.sub"(%164, %165) {dfg_id = 340 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %167 = "neura.data_mov"(%166) {dfg_id = 344 : i32, mapping_locs = [{id = 45 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %168 = "neura.data_mov"(%132) {dfg_id = 313 : i32, mapping_locs = [{id = 2001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 2001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 2001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 2001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 2001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 2001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 2001 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 2001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 2001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%167, %168) {dfg_id = 348 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %169 = "neura.data_mov"(%163) {dfg_id = 288 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 24 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 29 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %170 = "neura.data_mov"(%147) {dfg_id = 335 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 160 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %171 = "neura.add"(%169, %170) {dfg_id = 339 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 343 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 266 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8008 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 8008 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%172, %173) {dfg_id = 347 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %174 = "neura.data_mov"(%159) {dfg_id = 247 : i32, mapping_locs = [{id = 416 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %175 = "neura.gep"(%174) <{operandSegmentSizes = array}> {dfg_id = 257 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %176 = "neura.data_mov"(%175) {dfg_id = 265 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %177 = "neura.load"(%176) {dfg_id = 274 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %178 = "neura.data_mov"(%177) {dfg_id = 287 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 25 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 4000 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 4000 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %179 = "neura.data_mov"(%156) {dfg_id = 334 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 1 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %180 = "neura.sub"(%178, %179) {dfg_id = 338 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 342 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %182 = "neura.data_mov"(%139) {dfg_id = 311 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 304 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 27 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 8002 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 8002 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 8002 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 8002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%181, %182) {dfg_id = 346 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %183 = "neura.data_mov"(%177) {dfg_id = 286 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 25 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 11 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %184 = "neura.data_mov"(%156) {dfg_id = 333 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %185 = "neura.add"(%183, %184) {dfg_id = 337 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %186 = "neura.data_mov"(%185) {dfg_id = 341 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %187 = "neura.data_mov"(%175) {dfg_id = 264 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 29 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 15 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 1000 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 2 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%186, %187) {dfg_id = 345 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %188 = "neura.data_mov"(%127) {dfg_id = 132 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %189 = "neura.add"(%188) {dfg_id = 145 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %190 = "neura.data_mov"(%189) {dfg_id = 153 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %191 = "neura.data_mov"(%112) {dfg_id = 158 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %192 = "neura.icmp"(%190, %191) <{cmpType = "eq"}> {dfg_id = 167 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %193 = "neura.data_mov"(%192) {dfg_id = 179 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %194 = "neura.not"(%193) {dfg_id = 191 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %195 = "neura.data_mov"(%189) {dfg_id = 152 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 8008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %196 = "neura.data_mov"(%194) {dfg_id = 216 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %197 = neura.grant_predicate %195, %196 {dfg_id = 230 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %197 -> %125 {dfg_id = 245 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 298 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 298 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 298 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 298 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 298 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 298 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 298 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 298 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 298 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 298 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 298 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 298 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 298 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 298 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %198 = "neura.data_mov"(%124) {dfg_id = 268 : i32, mapping_locs = [{id = 204 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 10 : i32}, {id = 204 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 11 : i32}, {id = 204 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 12 : i32}, {id = 204 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 13 : i32}, {id = 204 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 14 : i32}, {id = 204 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 15 : i32}, {id = 204 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 16 : i32}, {id = 204 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 17 : i32}, {id = 204 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 18 : i32}, {id = 204 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 19 : i32}, {id = 204 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %199 = "neura.data_mov"(%194) {dfg_id = 215 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 33 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 209 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 209 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}, {id = 209 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}, {id = 209 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 209 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 209 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %200 = neura.grant_predicate %198, %199 {dfg_id = 276 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %200 -> %122 {dfg_id = 290 : i32, mapping_locs = [{id = 195 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 195 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 195 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 195 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 195 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 195 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 195 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}, {id = 195 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %201 = "neura.data_mov"(%121) {dfg_id = 253 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 224 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 224 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %202 = "neura.data_mov"(%194) {dfg_id = 214 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 32 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 36 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 232 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %203 = neura.grant_predicate %201, %202 {dfg_id = 261 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %203 -> %119 {dfg_id = 271 : i32, mapping_locs = [{id = 225 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 225 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 225 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 225 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 225 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 225 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 225 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}, {id = 225 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 24 : i32}, {id = 225 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 25 : i32}, {id = 225 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 26 : i32}, {id = 225 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 27 : i32}, {id = 225 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 28 : i32}, {id = 225 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 29 : i32}, {id = 225 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 30 : i32}, {id = 225 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 31 : i32}, {id = 225 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %204 = "neura.data_mov"(%118) {dfg_id = 250 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 2000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 2000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %205 = "neura.data_mov"(%194) {dfg_id = 213 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 33 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 19 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 2008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %206 = neura.grant_predicate %204, %205 {dfg_id = 260 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %206 -> %116 {dfg_id = 270 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 2008 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 2008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 2008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 2008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 2008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 2008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 2008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}, {id = 2008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 29 : i32}, {id = 2008 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 30 : i32}, {id = 2008 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 31 : i32}, {id = 2008 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %207 = "neura.data_mov"(%115) {dfg_id = 217 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 424 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 424 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 424 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 424 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 424 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %208 = "neura.data_mov"(%194) {dfg_id = 212 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 30 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 417 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 417 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 417 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 417 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = neura.grant_predicate %207, %208 {dfg_id = 231 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %209 -> %113 {dfg_id = 246 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 299 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 19 : i32}, {id = 299 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 20 : i32}, {id = 299 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 21 : i32}, {id = 299 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 22 : i32}, {id = 299 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 23 : i32}, {id = 299 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 24 : i32}, {id = 299 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 25 : i32}, {id = 299 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 299 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}, {id = 299 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 28 : i32}, {id = 299 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 29 : i32}, {id = 299 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 30 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %210 = "neura.data_mov"(%112) {dfg_id = 157 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %211 = "neura.data_mov"(%194) {dfg_id = 211 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %212 = neura.grant_predicate %210, %211 {dfg_id = 229 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %212 -> %110 {dfg_id = 244 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 4008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 4008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 4008 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 4008 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %213 = "neura.data_mov"(%109) {dfg_id = 130 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 8016 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 8016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 8016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 8016 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 8016 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 8016 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 8016 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %214 = "neura.data_mov"(%194) {dfg_id = 210 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 8009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 8009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 8009 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 8009 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 8009 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 8009 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %215 = neura.grant_predicate %213, %214 {dfg_id = 228 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %215 -> %107 {dfg_id = 243 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 305 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 305 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 305 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}, {id = 305 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 23 : i32}, {id = 305 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 24 : i32}, {id = 305 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 25 : i32}, {id = 305 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 26 : i32}, {id = 305 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 27 : i32}, {id = 305 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 28 : i32}, {id = 305 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %216 = "neura.data_mov"(%106) {dfg_id = 155 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 4001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 4001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 4001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %217 = "neura.data_mov"(%194) {dfg_id = 209 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 4016 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 4016 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 4016 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}, {id = 4016 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 4016 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %218 = neura.grant_predicate %216, %217 {dfg_id = 227 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %218 -> %104 {dfg_id = 242 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 172 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 19 : i32}, {id = 172 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 20 : i32}, {id = 172 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 21 : i32}, {id = 172 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 22 : i32}, {id = 172 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 23 : i32}, {id = 172 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 24 : i32}, {id = 172 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 25 : i32}, {id = 172 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 26 : i32}, {id = 172 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 27 : i32}, {id = 172 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 28 : i32}, {id = 172 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 29 : i32}, {id = 172 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 30 : i32}, {id = 172 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %219 = "neura.data_mov"(%103) {dfg_id = 164 : i32, mapping_locs = [{id = 193 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %220 = "neura.data_mov"(%194) {dfg_id = 208 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 33 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 202 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 202 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 202 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 202 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 202 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %221 = neura.grant_predicate %219, %220 {dfg_id = 226 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %221 -> %101 {dfg_id = 241 : i32, mapping_locs = [{id = 203 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 20 : i32}, {id = 203 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 21 : i32}, {id = 203 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 22 : i32}, {id = 203 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 23 : i32}, {id = 203 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 24 : i32}, {id = 203 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 25 : i32}, {id = 203 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 203 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}, {id = 203 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 28 : i32}, {id = 203 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 29 : i32}, {id = 203 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 30 : i32}, {id = 203 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 31 : i32}, {id = 203 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 32 : i32}, {id = 203 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 33 : i32}, {id = 203 : i32, index_per_ii = 15 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 34 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %222 = "neura.data_mov"(%100) {dfg_id = 160 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %223 = "neura.data_mov"(%194) {dfg_id = 207 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 4000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 4000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 4000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %224 = neura.grant_predicate %222, %223 {dfg_id = 225 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %224 -> %98 {dfg_id = 240 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 177 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 177 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 177 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 177 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 177 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}, {id = 177 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 23 : i32}, {id = 177 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 24 : i32}, {id = 177 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 25 : i32}, {id = 177 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 26 : i32}, {id = 177 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 27 : i32}, {id = 177 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 28 : i32}, {id = 177 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 29 : i32}, {id = 177 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 30 : i32}, {id = 177 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 31 : i32}, {id = 177 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 32 : i32}, {id = 177 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 33 : i32}, {id = 177 : i32, index_per_ii = 15 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 34 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %225 = "neura.data_mov"(%97) {dfg_id = 139 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 163 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 163 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 163 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 163 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %226 = "neura.data_mov"(%194) {dfg_id = 206 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 29 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 171 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 14 : i32}, {id = 171 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 15 : i32}, {id = 171 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 16 : i32}, {id = 171 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 17 : i32}, {id = 171 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 18 : i32}, {id = 171 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 224 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %227 -> %95 {dfg_id = 239 : i32, mapping_locs = [{id = 163 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 163 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 163 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 163 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 163 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}, {id = 163 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 25 : i32}, {id = 163 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 26 : i32}, {id = 163 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 27 : i32}, {id = 163 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 28 : i32}, {id = 163 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 29 : i32}, {id = 163 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 30 : i32}, {id = 163 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 31 : i32}, {id = 163 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 32 : i32}, {id = 163 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 33 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %228 = "neura.data_mov"(%94) {dfg_id = 136 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 8001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 8001 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %229 = "neura.data_mov"(%194) {dfg_id = 205 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 8009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 8009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 8009 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 8009 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 8009 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %230 = neura.grant_predicate %228, %229 {dfg_id = 223 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %230 -> %92 {dfg_id = 238 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 28 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 330 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 330 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 330 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 330 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 330 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 330 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 330 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 330 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}, {id = 330 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 28 : i32}, {id = 330 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 29 : i32}, {id = 330 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 30 : i32}, {id = 330 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %231 = "neura.data_mov"(%109) {dfg_id = 129 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %232 = "neura.data_mov"(%192) {dfg_id = 178 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %233 = neura.grant_predicate %231, %232 {dfg_id = 190 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %234 = "neura.data_mov"(%106) {dfg_id = 154 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %235 = "neura.data_mov"(%192) {dfg_id = 177 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %236 = neura.grant_predicate %234, %235 {dfg_id = 189 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %237 = "neura.data_mov"(%103) {dfg_id = 163 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 16 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %238 = "neura.data_mov"(%192) {dfg_id = 176 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 289 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 289 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %239 = neura.grant_predicate %237, %238 {dfg_id = 188 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %240 = "neura.data_mov"(%100) {dfg_id = 159 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %241 = "neura.data_mov"(%192) {dfg_id = 175 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 168 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %242 = neura.grant_predicate %240, %241 {dfg_id = 187 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %243 = "neura.data_mov"(%97) {dfg_id = 138 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %244 = "neura.data_mov"(%192) {dfg_id = 174 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 4002 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %245 = neura.grant_predicate %243, %244 {dfg_id = 186 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %246 = "neura.data_mov"(%94) {dfg_id = 135 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %247 = "neura.data_mov"(%192) {dfg_id = 173 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 28 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %248 = neura.grant_predicate %246, %247 {dfg_id = 185 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %249 = "neura.data_mov"(%112) {dfg_id = 156 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %250 = "neura.data_mov"(%192) {dfg_id = 172 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %251 = neura.grant_predicate %249, %250 {dfg_id = 184 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %252 = "neura.data_mov"(%233) {dfg_id = 204 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %253 = "neura.add"(%252) {dfg_id = 222 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %254 = "neura.data_mov"(%253) {dfg_id = 237 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %255 = "neura.data_mov"(%236) {dfg_id = 203 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %256 = "neura.icmp"(%254, %255) <{cmpType = "eq"}> {dfg_id = 256 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %257 = "neura.data_mov"(%256) {dfg_id = 263 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %258 = "neura.not"(%257) {dfg_id = 273 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %259 = "neura.data_mov"(%253) {dfg_id = 236 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %260 = "neura.data_mov"(%258) {dfg_id = 285 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %261 = neura.grant_predicate %259, %260 {dfg_id = 300 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %261 -> %64 {dfg_id = 310 : i32, mapping_locs = [{id = 42 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 297 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 297 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 297 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 297 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 297 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %262 = "neura.data_mov"(%239) {dfg_id = 201 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %263 = "neura.data_mov"(%258) {dfg_id = 284 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 416 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 416 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %264 = neura.grant_predicate %262, %263 {dfg_id = 299 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %264 -> %61 {dfg_id = 309 : i32, mapping_locs = [{id = 41 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 45 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 201 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 201 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 201 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 201 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 201 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}, {id = 201 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %265 = "neura.data_mov"(%242) {dfg_id = 200 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 1000 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %266 = "neura.data_mov"(%258) {dfg_id = 283 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 15 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %267 = neura.grant_predicate %265, %266 {dfg_id = 298 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %267 -> %58 {dfg_id = 308 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 169 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 169 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 169 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 169 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %268 = "neura.data_mov"(%245) {dfg_id = 199 : i32, mapping_locs = [{id = 4002 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 4002 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 4002 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %269 = "neura.data_mov"(%258) {dfg_id = 282 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 13 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 4016 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 4016 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %270 = neura.grant_predicate %268, %269 {dfg_id = 297 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %270 -> %55 {dfg_id = 307 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 184 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 184 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 184 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 184 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 184 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %271 = "neura.data_mov"(%248) {dfg_id = 198 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %272 = "neura.data_mov"(%258) {dfg_id = 281 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %273 = neura.grant_predicate %271, %272 {dfg_id = 296 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %273 -> %52 {dfg_id = 306 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 304 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 304 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 304 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 304 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 304 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 304 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 304 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 304 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %274 = "neura.data_mov"(%251) {dfg_id = 196 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 8000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 8000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 8000 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 8000 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %275 = "neura.data_mov"(%258) {dfg_id = 280 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %276 = neura.grant_predicate %274, %275 {dfg_id = 295 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %276 -> %49 {dfg_id = 305 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 4009 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 4009 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 4009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 4009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 4009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 4009 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 4009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 4009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 4009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}, {id = 4009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %277 = "neura.data_mov"(%236) {dfg_id = 202 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 162 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 162 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 162 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %278 = "neura.data_mov"(%258) {dfg_id = 279 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %279 = neura.grant_predicate %277, %278 {dfg_id = 294 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %279 -> %46 {dfg_id = 304 : i32, mapping_locs = [{id = 170 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 170 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 170 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 170 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 170 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 170 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 170 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 170 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 170 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 170 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}, {id = 170 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 28 : i32}, {id = 170 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 29 : i32}, {id = 170 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 30 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %280 = "neura.data_mov"(%248) {dfg_id = 197 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %281 = "neura.data_mov"(%256) {dfg_id = 262 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %282 = neura.grant_predicate %280, %281 {dfg_id = 272 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %283 = "neura.data_mov"(%37) {dfg_id = 99 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 288 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %284 = "neura.data_mov"(%282) {dfg_id = 278 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %285 = "neura.phi"(%283, %284) {dfg_id = 293 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %286 = "neura.data_mov"(%12) {dfg_id = 45 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %287 = "neura.shl"(%286) {dfg_id = 53 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %288 = "neura.data_mov"(%15) {dfg_id = 42 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %289 = "neura.div"(%288) {dfg_id = 51 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 2 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %290 = "neura.data_mov"(%18) {dfg_id = 40 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %291 = "neura.shl"(%290) {dfg_id = 50 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 3 : i32, y = 1 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %292 = "neura.data_mov"(%291) {dfg_id = 56 : i32, mapping_locs = [{id = 224 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %293 = "neura.or"(%292) {dfg_id = 65 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 3 : i32, y = 1 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %294 = "neura.data_mov"(%9) {dfg_id = 39 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %295 = "neura.add"(%294) {dfg_id = 49 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 1 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %296 = "neura.data_mov"(%295) {dfg_id = 55 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %297 = "neura.icmp"(%296) <{cmpType = "eq"}> {dfg_id = 64 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 8 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %298 = "neura.data_mov"(%297) {dfg_id = 73 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 321 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %299 = "neura.not"(%298) {dfg_id = 84 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %300 = "neura.data_mov"(%293) {dfg_id = 74 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 201 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 201 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 201 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 201 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 201 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 201 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 201 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 201 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 201 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 201 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %301 = "neura.data_mov"(%299) {dfg_id = 98 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 208 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %302 = neura.grant_predicate %300, %301 {dfg_id = 115 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %302 -> %16 {dfg_id = 128 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 224 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}, {id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}, {id = 224 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %303 = "neura.data_mov"(%289) {dfg_id = 57 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 32 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 352 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 352 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 352 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 352 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 352 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 352 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 352 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 352 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 352 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 352 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 352 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 352 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 352 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 352 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %304 = "neura.data_mov"(%299) {dfg_id = 97 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %305 = neura.grant_predicate %303, %304 {dfg_id = 114 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %305 -> %13 {dfg_id = 127 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}, {id = 31 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %306 = "neura.data_mov"(%287) {dfg_id = 63 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 329 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 329 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 329 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 329 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 329 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %307 = "neura.data_mov"(%299) {dfg_id = 96 : i32, mapping_locs = [{id = 321 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 321 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %308 = neura.grant_predicate %306, %307 {dfg_id = 113 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %308 -> %10 {dfg_id = 126 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 328 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %309 = "neura.data_mov"(%295) {dfg_id = 54 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 194 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 194 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 194 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %310 = "neura.data_mov"(%299) {dfg_id = 95 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %311 = neura.grant_predicate %309, %310 {dfg_id = 112 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %311 -> %7 {dfg_id = 125 : i32, mapping_locs = [{id = 194 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 194 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 194 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 194 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 194 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 194 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 194 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}, {id = 194 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 25 : i32}, {id = 194 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 26 : i32}, {id = 194 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 27 : i32}, {id = 194 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 28 : i32}, {id = 194 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 29 : i32}, {id = 194 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 30 : i32}, {id = 194 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %312 = "neura.data_mov"(%285) {dfg_id = 303 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 32 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %313 = "neura.data_mov"(%299) {dfg_id = 94 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 17 : i32}, {id = 352 : i32, index_per_ii = 18 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %314 = neura.grant_predicate %312, %313 {dfg_id = 315 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %314 -> %4 {dfg_id = 318 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 336 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %315 = "neura.data_mov"(%297) {dfg_id = 71 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %316 = "neura.data_mov"(%297) {dfg_id = 72 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %317 = neura.grant_predicate %315, %316 {dfg_id = 83 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %318 = "neura.data_mov"(%317) {dfg_id = 93 : i32, mapping_locs = [{id = 37 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %318 : !neura.data {dfg_id = 111 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 17 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 3 : i32}]} +// MAPPING-NEXT: neura.yield {dfg_id = 28 : i32} +// MAPPING-NEXT: } +// MAPPING-NEXT: } -// YAML: array_config: -// YAML-NEXT: columns: 4 -// YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 19 -// YAML-NEXT: cores: -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "0" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 345 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 337 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3340002 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 298 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 317 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 325 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 17 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3340001 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 18 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2640003 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 200 -// YAML-NEXT: time_step: 18 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 348 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 290001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 12 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 302 -// YAML-NEXT: time_step: 12 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 194 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 234 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 3220001 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 324 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 331 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 213 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 17 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 260 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "3" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 195 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 316 -// YAML-NEXT: time_step: 14 +// YAML: array_config: +// YAML-NEXT: columns: 4 +// YAML-NEXT: rows: 4 +// YAML-NEXT: compiled_ii: 19 +// YAML-NEXT: cores: +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "0" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 345 +// YAML-NEXT: time_step: 19 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 18 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 337 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 3340001 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 298 +// YAML-NEXT: time_step: 19 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 13 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 317 +// YAML-NEXT: time_step: 13 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 15 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "MUL" +// YAML-NEXT: id: 325 +// YAML-NEXT: time_step: 15 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 17 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 3340000 +// YAML-NEXT: time_step: 17 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 18 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 2640002 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 200 +// YAML-NEXT: time_step: 18 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 348 +// YAML-NEXT: time_step: 22 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 6 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 290000 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: + + +// ASM: # Compiled II: 19 +// ASM: PE(0,0): +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [EAST, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: ADD, [NORTH, RED], [EAST, RED] -> [$0] (t=18, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=18, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=18) -// ASM: # Compiled II: 19 -// ASM: PE(0,0): -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [EAST, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: ADD, [NORTH, RED], [EAST, RED] -> [$0] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=18, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=18) -// ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [NORTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [EAST, RED] -> [EAST, RED], [$0] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [EAST, RED] -> [EAST, RED] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=17, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=17) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=18, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=18) -// ASM: PE(2,0): -// ASM-NEXT: { -// ASM-NEXT: STORE, [NORTH, RED], [$1] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg0], [NORTH, RED] -> [WEST, RED], [$1] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [$0], [WEST, RED] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: MUL, [EAST, RED], [$0] -> [NORTH, RED] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: ADD, [EAST, RED], [WEST, RED] -> [WEST, RED] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$8] (t=17, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=17) -// ASM: PE(3,0): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED], [NORTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [NORTH, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [WEST, RED], [$0] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [NORTH, RED] -> [WEST, RED] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM: PE(0,1): -// ASM-NEXT: { -// ASM-NEXT: SUB, [$0], [SOUTH, RED] -> [NORTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$16] -> [EAST, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$9] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [NORTH, RED], [$0] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [NORTH, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$2] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$8] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$1] -> [NORTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$2] -> [$2] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [EAST, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=17, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=17) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$16] -> [EAST, RED] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=18, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$9] (t=18, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=18) -// ASM: PE(1,1): -// ASM-NEXT: { -// ASM-NEXT: ADD, [NORTH, RED], [$0] -> [WEST, RED] (t=19, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$12] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$3], [$11] -> [$3] (t=20, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$9] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [NORTH, RED], [#0] -> [EAST, RED], [$8], [$16], [NORTH, RED], [WEST, RED] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$24] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0], [WEST, RED], [$8] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$9] -> [NORTH, RED], [$1] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$8], [$24] -> [$0], [$9] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [NORTH, RED] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [EAST, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$16] -> [$0] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [$0] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$10] -> [$0] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$12] -> [WEST, RED], [$0] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [NORTH, RED], [$2] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$11] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$9], [$3] -> [$3], [WEST, RED] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$17] -> [WEST, RED], [$0] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [WEST, RED] (t=17, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=17, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=17) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$8] -> [$10] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=18, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$17] (t=18, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=18) -// ASM: PE(2,1): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$9], [$16] -> [EAST, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$10] -> [$11] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$12], [$17] -> [$3] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$9] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [$0] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$9] -> [NORTH, RED], [$1] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$9] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$3] -> [$0], [$12] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: ADD, [NORTH, RED], [$0] -> [SOUTH, RED], [$0] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [EAST, RED], [WEST, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$8], [$2] -> [$0] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [NORTH, RED], [$2] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: MUL, [SOUTH, RED], [EAST, RED] -> [$0] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$17] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=15, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$10] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$1], [$11] -> [$1], [WEST, RED] (t=16, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM-NEXT: { -// ASM-NEXT: SUB, [$0], [$8] -> [NORTH, RED], [WEST, RED] (t=17, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=17) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [NORTH, RED] -> [$2] (t=18, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$16] (t=18, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=18) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$0] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [WEST, RED], [$0] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: SHL, [$0], [#1] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: OR, [$0], [#1] -> [WEST, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [WEST, RED], [SOUTH, RED], [$0] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$1] (t=17, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=17) -// ASM: PE(0,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$16], [$9] -> [EAST, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: STORE, [SOUTH, RED], [$2] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: STORE, [SOUTH, RED], [$8] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [EAST, RED], [SOUTH, RED] -> [$0], [EAST, RED], [SOUTH, RED] (t=11, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0], [EAST, RED], [SOUTH, RED], [$9] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=12, inv_iters=0) diff --git a/test/e2e/fir/fir_kernel.mlir b/test/e2e/fir/fir_kernel.mlir index 5bf6f452..7013f20c 100644 --- a/test/e2e/fir/fir_kernel.mlir +++ b/test/e2e/fir/fir_kernel.mlir @@ -25,337 +25,234 @@ // RUN: FileCheck %s --input-file=%t-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=%t-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data -// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 6 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %4 = neura.phi_start %3, %2 {dfg_id = 8 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %5 = neura.reserve {dfg_id = 3 : i32} : !neura.data -// MAPPING-NEXT: %6 = "neura.data_mov"(%0) {dfg_id = 5 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = neura.phi_start %6, %5 {dfg_id = 7 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 11 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.gep"(%8) <{operandSegmentSizes = array}> {dfg_id = 15 : i32, lhs_value = "%arg0", mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 19 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.load"(%10) {dfg_id = 22 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%7) {dfg_id = 10 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = "neura.gep"(%12) <{operandSegmentSizes = array}> {dfg_id = 14 : i32, lhs_value = "%arg2", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 18 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.load"(%14) {dfg_id = 21 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 25 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%11) {dfg_id = 26 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.mul"(%16, %17) {dfg_id = 28 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %19 = "neura.data_mov"(%18) {dfg_id = 31 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = "neura.data_mov"(%4) {dfg_id = 12 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 29 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = "neura.add"(%19, %20) {dfg_id = 33 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%7) {dfg_id = 9 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = "neura.add"(%22) {dfg_id = 13 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 17 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 27 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 30 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 34 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%21) {dfg_id = 36 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 29 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 25 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 38 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %33 -> %2 {dfg_id = 40 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 8 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%21) {dfg_id = 35 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.data_mov"(%25) {dfg_id = 23 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 37 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%36) {dfg_id = 39 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_value %37 : !neura.data {dfg_id = 41 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} -// MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} -// MAPPING-NEXT: } -// MAPPING-NEXT: } +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data +// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 6 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %4 = neura.phi_start %3, %2 {dfg_id = 8 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %5 = neura.reserve {dfg_id = 3 : i32} : !neura.data +// MAPPING-NEXT: %6 = "neura.data_mov"(%0) {dfg_id = 5 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = neura.phi_start %6, %5 {dfg_id = 7 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 11 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.gep"(%8) <{operandSegmentSizes = array}> {dfg_id = 15 : i32, lhs_value = "%arg0", mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 19 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.load"(%10) {dfg_id = 22 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%7) {dfg_id = 10 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = "neura.gep"(%12) <{operandSegmentSizes = array}> {dfg_id = 14 : i32, lhs_value = "%arg2", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 18 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.load"(%14) {dfg_id = 21 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 25 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%11) {dfg_id = 26 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.mul"(%16, %17) {dfg_id = 28 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %19 = "neura.data_mov"(%18) {dfg_id = 31 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = "neura.data_mov"(%4) {dfg_id = 12 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 29 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = "neura.add"(%19, %20) {dfg_id = 33 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%7) {dfg_id = 9 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.add"(%22) {dfg_id = 13 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 17 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 27 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 30 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 34 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%21) {dfg_id = 36 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 29 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 25 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 38 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %33 -> %2 {dfg_id = 40 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 8 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%21) {dfg_id = 35 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.data_mov"(%25) {dfg_id = 23 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 37 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%36) {dfg_id = 39 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_value %37 : !neura.data {dfg_id = 41 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} +// MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} +// MAPPING-NEXT: } +// MAPPING-NEXT: } + + // YAML: array_config: -// YAML-NEXT: columns: 4 -// YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 5 -// YAML-NEXT: cores: -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 310001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "MUL" -// YAML-NEXT: id: 28 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 22 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "3" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 21 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "4" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 38 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 12 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 33 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VALUE" -// YAML-NEXT: id: 41 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 15 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 180001 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 290002 -// YAML-NEXT: time_step: 6 +// YAML-NEXT: columns: 4 +// YAML-NEXT: rows: 4 +// YAML-NEXT: compiled_ii: 5 +// YAML-NEXT: cores: +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 310000 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "MUL" +// YAML-NEXT: id: 28 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 22 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "3" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 21 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "4" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 29 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 38 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 12 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 33 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "RETURN_VALUE" +// YAML-NEXT: id: 41 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "6" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 15 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" -// ASM: # Compiled II: 5 -// ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM: PE(2,0): -// ASM-NEXT: { -// ASM-NEXT: MUL, [EAST, RED], [$0] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(3,0): -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(0,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [NORTH, RED] (t=8, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(1,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ADD, [SOUTH, RED], [$0] -> [WEST, RED], [NORTH, RED] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: RETURN_VALUE, [NORTH, RED] (t=9, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(2,1): -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg0], [NORTH, RED] -> [SOUTH, RED] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(0,2): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [SOUTH, RED] -> [EAST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(1,2): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [SOUTH, RED], [$0] -> [SOUTH, RED] (t=8, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(2,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [SOUTH, RED], [EAST, RED], [$0] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0], [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(3,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=0, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) +// ASM: Compiled II: 5 +// ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: MUL, [EAST, RED], [$0] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) // RUN: mlir-neura-opt %t-kernel.mlir --view-op-graph 2>&1 | sed -n '/^digraph G {/,/^}$/p' > fir_kernel_original.dot @@ -377,71 +274,3 @@ // RUN: FileCheck %s --input-file=fir_kernel.dot -check-prefix=DOT // DOT: digraph G { -// DOT-NEXT: compound = true; -// DOT-NEXT: subgraph cluster_1 { -// DOT-NEXT: v2 [label = " ", shape = plain]; -// DOT: subgraph cluster_3 { -// DOT-NEXT: v4 [label = " ", shape = plain]; -// DOT-NEXT: label = ""; -// DOT-NEXT: subgraph cluster_5 { -// DOT-NEXT: v6 [label = " ", shape = plain]; -// DOT-NEXT: label = "func.func : ()\n\nCConv: #llvm.cconv\naccelerator: \"neura\"\narg_attrs: [{llvm.nocapture, ll...\ndataflow_mode: \"predicate\"\nfunction_type: (!llvm.ptr, !llvm.pt...\nlinkage: #llvm.linkage", shape = ellipse, style = filled]; -// DOT-NEXT: v19 [fillcolor = "0.266667 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v20 [fillcolor = "0.200000 1.0 1.0", label = "neura.gep : (!neura.data", shape = ellipse, style = filled]; -// DOT-NEXT: v21 [fillcolor = "0.266667 1.0 1.0", label = "neura.load : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v22 [fillcolor = "0.333333 1.0 1.0", label = "neura.mul : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v23 [fillcolor = "0.400000 1.0 1.0", label = "neura.add : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v24 [fillcolor = "0.400000 1.0 1.0", label = "neura.add : (!neura.data)\n\nrhs_value: 1 : i64", shape = ellipse, style = filled]; -// DOT-NEXT: v25 [fillcolor = "0.466667 1.0 1.0", label = "neura.icmp : (!neura.data)\n\ncmpType: \"eq\"\nrhs_value: 32 : i64", shape = ellipse, style = filled]; -// DOT-NEXT: v26 [fillcolor = "0.533333 1.0 1.0", label = "neura.not : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v27 [fillcolor = "0.600000 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v28 [fillcolor = "0.666667 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v29 [fillcolor = "0.600000 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v30 [fillcolor = "0.666667 1.0 1.0", label = "neura.ctrl_mov : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v31 [fillcolor = "0.600000 1.0 1.0", label = "neura.grant_predicate : (!neura.data)\n", shape = ellipse, style = filled]; -// DOT-NEXT: v32 [fillcolor = "0.733333 1.0 1.0", label = "neura.return_value : ()\n", shape = ellipse, style = filled]; -// DOT-NEXT: v33 [fillcolor = "0.800000 1.0 1.0", label = "neura.yield : ()\n\noperandSegmentSizes: array", shape = ellipse, style = filled]; -// DOT-NEXT: } -// DOT-NEXT: } -// DOT-NEXT: } -// DOT-NEXT: } -// DOT-NEXT: v13 -> v15 [label = "0", style = solid]; -// DOT-NEXT: v14 -> v15 [label = "1", style = solid]; -// DOT-NEXT: v12 -> v17 [label = "0", style = solid]; -// DOT-NEXT: v16 -> v17 [label = "1", style = solid]; -// DOT-NEXT: v17 -> v18 [label = "", style = solid]; -// DOT-NEXT: v18 -> v19 [label = "", style = solid]; -// DOT-NEXT: v17 -> v20 [label = "", style = solid]; -// DOT-NEXT: v20 -> v21 [label = "", style = solid]; -// DOT-NEXT: v21 -> v22 [label = "0", style = solid]; -// DOT-NEXT: v19 -> v22 [label = "1", style = solid]; -// DOT-NEXT: v22 -> v23 [label = "0", style = solid]; -// DOT-NEXT: v15 -> v23 [label = "1", style = solid]; -// DOT-NEXT: v17 -> v24 [label = "", style = solid]; -// DOT-NEXT: v24 -> v25 [label = "", style = solid]; -// DOT-NEXT: v25 -> v26 [label = "", style = solid]; -// DOT-NEXT: v24 -> v27 [label = "0", style = solid]; -// DOT-NEXT: v26 -> v27 [label = "1", style = solid]; -// DOT-NEXT: v27 -> v28 [label = "0", style = solid]; -// DOT-NEXT: v16 -> v28 [label = "1", style = solid]; -// DOT-NEXT: v23 -> v29 [label = "0", style = solid]; -// DOT-NEXT: v26 -> v29 [label = "1", style = solid]; -// DOT-NEXT: v29 -> v30 [label = "0", style = solid]; -// DOT-NEXT: v14 -> v30 [label = "1", style = solid]; -// DOT-NEXT: v23 -> v31 [label = "0", style = solid]; -// DOT-NEXT: v25 -> v31 [label = "1", style = solid]; -// DOT-NEXT: v31 -> v32 [label = "", style = solid]; -// DOT-NEXT: } diff --git a/test/e2e/fir/fir_kernel_vec.mlir b/test/e2e/fir/fir_kernel_vec.mlir index 8c6595d1..c1cf1c0c 100644 --- a/test/e2e/fir/fir_kernel_vec.mlir +++ b/test/e2e/fir/fir_kernel_vec.mlir @@ -23,371 +23,266 @@ // RUN: FileCheck %s --input-file=%t-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=%t-generated-instructions.asm --check-prefix=ASM -// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = dense<0> : vector<4xi32>}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data, i1> -// MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data, i1> -// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 6 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> -// MAPPING-NEXT: %4 = neura.phi_start %3, %2 {dfg_id = 8 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, i1>, !neura.data, i1> -> !neura.data, i1> -// MAPPING-NEXT: %5 = neura.reserve {dfg_id = 3 : i32} : !neura.data -// MAPPING-NEXT: %6 = "neura.data_mov"(%0) {dfg_id = 5 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = neura.phi_start %6, %5 {dfg_id = 7 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 11 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.gep"(%8) <{operandSegmentSizes = array}> {dfg_id = 15 : i32, lhs_value = "%arg0", mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 19 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.load"(%10) {dfg_id = 22 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data, i1> -// MAPPING-NEXT: %12 = "neura.data_mov"(%7) {dfg_id = 10 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = "neura.gep"(%12) <{operandSegmentSizes = array}> {dfg_id = 14 : i32, lhs_value = "%arg2", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 18 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.load"(%14) {dfg_id = 21 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data, i1> -// MAPPING-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 25 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> -// MAPPING-NEXT: %17 = "neura.data_mov"(%11) {dfg_id = 26 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> -// MAPPING-NEXT: %18 = "neura.vmul"(%16, %17) {dfg_id = 28 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, i1>, !neura.data, i1>) -> !neura.data, i1> -// MAPPING-NEXT: %19 = "neura.data_mov"(%18) {dfg_id = 31 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> -// MAPPING-NEXT: %20 = "neura.data_mov"(%4) {dfg_id = 12 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 29 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> -// MAPPING-NEXT: %21 = "neura.vadd"(%19, %20) {dfg_id = 33 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, i1>, !neura.data, i1>) -> !neura.data, i1> -// MAPPING-NEXT: %22 = "neura.data_mov"(%7) {dfg_id = 9 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = "neura.add"(%22) {dfg_id = 13 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 17 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 27 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 30 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 34 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%21) {dfg_id = 36 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 29 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 25 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 38 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, i1>, !neura.data -> !neura.data, i1> -// MAPPING-NEXT: neura.ctrl_mov %33 -> %2 {dfg_id = 40 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 8 : i32}]} : !neura.data, i1> !neura.data, i1> -// MAPPING-NEXT: %34 = "neura.data_mov"(%21) {dfg_id = 35 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> -// MAPPING-NEXT: %35 = "neura.data_mov"(%25) {dfg_id = 23 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 37 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, i1>, !neura.data -> !neura.data, i1> -// MAPPING-NEXT: %37 = "neura.data_mov"(%36) {dfg_id = 39 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> -// MAPPING-NEXT: %38 = "neura.vector.reduce.add"(%37) {dfg_id = 41 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, i1>) -> !neura.data -// MAPPING-NEXT: %39 = "neura.data_mov"(%38) {dfg_id = 42 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_value %39 : !neura.data {dfg_id = 43 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 3 : i32}]} -// MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} -// MAPPING-NEXT: } -// MAPPING-NEXT: } +// MAPPING: func.func @_Z6kernelPiS_S_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readnone}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> (i32 {llvm.noundef}) attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64, will_return} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = dense<0> : vector<4xi32>}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data, i1> +// MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data, i1> +// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 6 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> +// MAPPING-NEXT: %4 = neura.phi_start %3, %2 {dfg_id = 8 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, i1>, !neura.data, i1> -> !neura.data, i1> +// MAPPING-NEXT: %5 = neura.reserve {dfg_id = 3 : i32} : !neura.data +// MAPPING-NEXT: %6 = "neura.data_mov"(%0) {dfg_id = 5 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = neura.phi_start %6, %5 {dfg_id = 7 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 11 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.gep"(%8) <{operandSegmentSizes = array}> {dfg_id = 15 : i32, lhs_value = "%arg0", mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 19 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.load"(%10) {dfg_id = 22 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data, i1> +// MAPPING-NEXT: %12 = "neura.data_mov"(%7) {dfg_id = 10 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = "neura.gep"(%12) <{operandSegmentSizes = array}> {dfg_id = 14 : i32, lhs_value = "%arg2", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 18 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.load"(%14) {dfg_id = 21 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data, i1> +// MAPPING-NEXT: %16 = "neura.data_mov"(%15) {dfg_id = 25 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> +// MAPPING-NEXT: %17 = "neura.data_mov"(%11) {dfg_id = 26 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> +// MAPPING-NEXT: %18 = "neura.vmul"(%16, %17) {dfg_id = 28 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, i1>, !neura.data, i1>) -> !neura.data, i1> +// MAPPING-NEXT: %19 = "neura.data_mov"(%18) {dfg_id = 31 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> +// MAPPING-NEXT: %20 = "neura.data_mov"(%4) {dfg_id = 12 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 29 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> +// MAPPING-NEXT: %21 = "neura.vadd"(%19, %20) {dfg_id = 33 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, i1>, !neura.data, i1>) -> !neura.data, i1> +// MAPPING-NEXT: %22 = "neura.data_mov"(%7) {dfg_id = 9 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.add"(%22) {dfg_id = 13 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 17 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 20 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 27 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 16 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 30 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 32 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 34 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%21) {dfg_id = 36 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 29 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 25 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 38 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, i1>, !neura.data -> !neura.data, i1> +// MAPPING-NEXT: neura.ctrl_mov %33 -> %2 {dfg_id = 40 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 8 : i32}]} : !neura.data, i1> !neura.data, i1> +// MAPPING-NEXT: %34 = "neura.data_mov"(%21) {dfg_id = 35 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> +// MAPPING-NEXT: %35 = "neura.data_mov"(%25) {dfg_id = 23 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 37 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, i1>, !neura.data -> !neura.data, i1> +// MAPPING-NEXT: %37 = "neura.data_mov"(%36) {dfg_id = 39 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data, i1>) -> !neura.data, i1> +// MAPPING-NEXT: %38 = "neura.vector.reduce.add"(%37) {dfg_id = 41 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, i1>) -> !neura.data +// MAPPING-NEXT: %39 = "neura.data_mov"(%38) {dfg_id = 42 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_value %39 : !neura.data {dfg_id = 43 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 3 : i32}]} +// MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} +// MAPPING-NEXT: } +// MAPPING-NEXT: } + + // YAML: array_config: -// YAML-NEXT: columns: 4 -// YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 5 -// YAML-NEXT: cores: -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 310001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "VMUL" -// YAML-NEXT: id: 28 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 22 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "3" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 21 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "4" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 38 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 12 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "VADD" -// YAML-NEXT: id: 33 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 15 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 180001 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 290002 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 8 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: +// YAML-NEXT: columns: 4 +// YAML-NEXT: rows: 4 +// YAML-NEXT: compiled_ii: 5 +// YAML-NEXT: cores: +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 310000 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "VMUL" +// YAML-NEXT: id: 28 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 22 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "3" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 21 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "4" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 29 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 38 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 12 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "VADD" +// YAML-NEXT: id: 33 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "6" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 15 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "7" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 180000 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 2 +// YAML-NEXT: core_id: "8" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 290001 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" // ASM: # Compiled II: 5 // ASM: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM: PE(2,0): -// ASM-NEXT: { -// ASM-NEXT: VMUL, [EAST, RED], [$0] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(3,0): -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(0,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [NORTH, RED] (t=8, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(1,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: VADD, [SOUTH, RED], [$0] -> [WEST, RED], [NORTH, RED] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(2,1): -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg0], [NORTH, RED] -> [SOUTH, RED] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(0,2): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [SOUTH, RED] -> [EAST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(1,2): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [SOUTH, RED], [$0] -> [$0] (t=8, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: VECTOR.REDUCE.ADD, [$0] -> [NORTH, RED] (t=9, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(2,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [SOUTH, RED], [EAST, RED], [$0] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#4] -> [$0], [$8] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0], [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(3,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=0, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(1,3): -// ASM-NEXT: { -// ASM-NEXT: RETURN_VALUE, [SOUTH, RED] (t=10, inv_iters=2) -// ASM-NEXT: } (idx_per_ii=0) - +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: VMUL, [EAST, RED], [$0] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) diff --git a/test/e2e/gemm/gemm_kernel.mlir b/test/e2e/gemm/gemm_kernel.mlir index 9adeddf4..96e71f5d 100644 --- a/test/e2e/gemm/gemm_kernel.mlir +++ b/test/e2e/gemm/gemm_kernel.mlir @@ -25,735 +25,684 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=CHAIN-ASM // RUN: FileCheck %s --input-file=tmp-generated-dfg.yaml --check-prefix=CHAIN-DFG // -// MAPPING: func.func @kernel_int(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: i32 {llvm.noundef}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 17 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 13 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = "%arg1"}> {dfg_id = 2 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %3 = "neura.constant"() <{value = "%arg1"}> {dfg_id = 3 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 1 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %4 = "neura.grant_once"() <{constant_value = "%arg2"}> {dfg_id = 4 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %5 = "neura.constant"() <{value = "%arg2"}> {dfg_id = 5 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %6 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 6 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %7 = "neura.data_mov"(%1) {dfg_id = 28 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %8 = "neura.icmp"(%7) <{cmpType = "sgt"}> {dfg_id = 34 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.data_mov"(%5) {dfg_id = 32 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.icmp"(%9) <{cmpType = "sgt"}> {dfg_id = 36 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 2 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.data_mov"(%8) {dfg_id = 37 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 39 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = "neura.and"(%11, %12) {dfg_id = 40 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%3) {dfg_id = 30 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.icmp"(%14) <{cmpType = "sgt"}> {dfg_id = 35 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %16 = "neura.data_mov"(%13) {dfg_id = 41 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%15) {dfg_id = 38 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.and"(%16, %17) {dfg_id = 42 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %19 = "neura.data_mov"(%18) {dfg_id = 44 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = "neura.grant_once"(%19) {dfg_id = 46 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = "neura.data_mov"(%18) {dfg_id = 43 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %22 = "neura.not"(%21) {dfg_id = 45 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = "neura.data_mov"(%22) {dfg_id = 47 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %24 = "neura.grant_once"(%23) {dfg_id = 53 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.data_mov"(%0) {dfg_id = 27 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%20) {dfg_id = 52 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = neura.grant_predicate %25, %26 {dfg_id = 58 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%4) {dfg_id = 31 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%20) {dfg_id = 51 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 57 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%2) {dfg_id = 29 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%20) {dfg_id = 50 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 56 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%6) {dfg_id = 33 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.data_mov"(%20) {dfg_id = 49 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 55 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%20) {dfg_id = 48 : i32, mapping_locs = [{id = 4010 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 4 : i32}, {id = 4010 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 5 : i32}, {id = 4010 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 6 : i32}, {id = 4010 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 7 : i32}, {id = 4010 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 8 : i32}, {id = 4010 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 9 : i32}, {id = 4010 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 10 : i32}, {id = 4010 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 11 : i32}, {id = 4010 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 4010 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 4010 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 4010 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %38 = "neura.not"(%37) {dfg_id = 54 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %39 = "neura.data_mov"(%24) {dfg_id = 59 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %40 = "neura.data_mov"(%38) {dfg_id = 60 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %41 = neura.grant_predicate %39, %40 {dfg_id = 66 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %42 = "neura.data_mov"(%27) {dfg_id = 65 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %43 = neura.zext %42 {dfg_id = 71 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %44 = "neura.data_mov"(%30) {dfg_id = 64 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %45 = neura.zext %44 {dfg_id = 70 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %46 = "neura.data_mov"(%33) {dfg_id = 63 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %47 = neura.zext %46 {dfg_id = 69 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %48 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %49 = "neura.data_mov"(%43) {dfg_id = 78 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %50 = neura.phi_start %49, %48 {dfg_id = 84 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %51 = neura.reserve {dfg_id = 8 : i32} : !neura.data -// MAPPING-NEXT: %52 = "neura.data_mov"(%45) {dfg_id = 77 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %53 = neura.phi_start %52, %51 {dfg_id = 83 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %54 = neura.reserve {dfg_id = 9 : i32} : !neura.data -// MAPPING-NEXT: %55 = "neura.data_mov"(%47) {dfg_id = 76 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %56 = neura.phi_start %55, %54 {dfg_id = 82 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %57 = neura.reserve {dfg_id = 10 : i32} : !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%36) {dfg_id = 62 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %59 = neura.phi_start %58, %57 {dfg_id = 68 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %60 = neura.reserve {dfg_id = 11 : i32} : !neura.data -// MAPPING-NEXT: %61 = "neura.data_mov"(%36) {dfg_id = 61 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %62 = neura.phi_start %61, %60 {dfg_id = 67 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %63 = neura.reserve {dfg_id = 12 : i32} : !neura.data -// MAPPING-NEXT: %64 = "neura.data_mov"(%50) {dfg_id = 93 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %65 = neura.phi_start %64, %63 {dfg_id = 101 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %66 = neura.reserve {dfg_id = 13 : i32} : !neura.data -// MAPPING-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 92 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %68 = neura.phi_start %67, %66 {dfg_id = 100 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %69 = neura.reserve {dfg_id = 14 : i32} : !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%56) {dfg_id = 91 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %71 = neura.phi_start %70, %69 {dfg_id = 99 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %72 = neura.reserve {dfg_id = 15 : i32} : !neura.data -// MAPPING-NEXT: %73 = "neura.data_mov"(%59) {dfg_id = 75 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %74 = neura.phi_start %73, %72 {dfg_id = 81 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %75 = neura.reserve {dfg_id = 16 : i32} : !neura.data -// MAPPING-NEXT: %76 = "neura.data_mov"(%62) {dfg_id = 73 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %77 = neura.phi_start %76, %75 {dfg_id = 79 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %78 = neura.reserve {dfg_id = 17 : i32} : !neura.data -// MAPPING-NEXT: %79 = "neura.data_mov"(%59) {dfg_id = 74 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = neura.phi_start %79, %78 {dfg_id = 80 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%77) {dfg_id = 86 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 208 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 208 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.data_mov"(%80) {dfg_id = 88 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 176 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 201 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 201 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = "neura.gep"(%81, %82) <{operandSegmentSizes = array}> {dfg_id = 96 : i32, lhs_value = "%arg4", mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %84 = neura.reserve {dfg_id = 18 : i32} : !neura.data -// MAPPING-NEXT: %85 = "neura.data_mov"(%74) {dfg_id = 90 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 193 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %86 = neura.phi_start %85, %84 {dfg_id = 98 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %87 = neura.reserve {dfg_id = 19 : i32} : !neura.data -// MAPPING-NEXT: %88 = "neura.data_mov"(%65) {dfg_id = 116 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %89 = neura.phi_start %88, %87 {dfg_id = 123 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %90 = neura.reserve {dfg_id = 20 : i32} : !neura.data -// MAPPING-NEXT: %91 = "neura.data_mov"(%68) {dfg_id = 115 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %92 = neura.phi_start %91, %90 {dfg_id = 122 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %93 = neura.reserve {dfg_id = 21 : i32} : !neura.data -// MAPPING-NEXT: %94 = "neura.data_mov"(%71) {dfg_id = 114 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %95 = neura.phi_start %94, %93 {dfg_id = 121 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %96 = neura.reserve {dfg_id = 22 : i32} : !neura.data -// MAPPING-NEXT: %97 = "neura.data_mov"(%77) {dfg_id = 85 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %98 = neura.phi_start %97, %96 {dfg_id = 94 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %99 = neura.reserve {dfg_id = 23 : i32} : !neura.data -// MAPPING-NEXT: %100 = "neura.data_mov"(%80) {dfg_id = 87 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %101 = neura.phi_start %100, %99 {dfg_id = 95 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %102 = neura.reserve {dfg_id = 24 : i32} : !neura.data -// MAPPING-NEXT: %103 = "neura.data_mov"(%83) {dfg_id = 108 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %104 = neura.phi_start %103, %102 {dfg_id = 117 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %105 = neura.reserve {dfg_id = 25 : i32} : !neura.data -// MAPPING-NEXT: %106 = "neura.data_mov"(%74) {dfg_id = 89 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %107 = neura.phi_start %106, %105 {dfg_id = 97 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %108 = "neura.data_mov"(%104) {dfg_id = 125 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %109 = "neura.load"(%108) {dfg_id = 138 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %110 = "neura.data_mov"(%101) {dfg_id = 107 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %111 = "neura.data_mov"(%107) {dfg_id = 111 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 4009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 4009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 4009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 4009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 4009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %112 = "neura.gep"(%110, %111) <{operandSegmentSizes = array}> {dfg_id = 120 : i32, lhs_value = "%arg5", mapping_locs = [{id = 4 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 130 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %114 = "neura.load"(%113) {dfg_id = 140 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 144 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 28 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = "neura.data_mov"(%109) {dfg_id = 142 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %117 = "neura.mul"(%115, %116) {dfg_id = 152 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %118 = "neura.data_mov"(%98) {dfg_id = 104 : i32, mapping_locs = [{id = 209 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 209 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 209 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 209 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 209 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %119 = "neura.data_mov"(%107) {dfg_id = 110 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 194 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 194 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 194 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 194 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 194 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 194 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 194 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 194 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %120 = "neura.gep"(%118, %119) <{operandSegmentSizes = array}> {dfg_id = 119 : i32, lhs_value = "%arg3", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %121 = "neura.data_mov"(%120) {dfg_id = 129 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %122 = "neura.load"(%121) {dfg_id = 139 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %123 = "neura.data_mov"(%122) {dfg_id = 143 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 2000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %124 = "neura.data_mov"(%117) {dfg_id = 160 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %125 = "neura.add"(%123, %124) {dfg_id = 181 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 191 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %127 = "neura.data_mov"(%120) {dfg_id = 128 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 2009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 2009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 2009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%126, %127) {dfg_id = 202 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %128 = "neura.data_mov"(%107) {dfg_id = 109 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %129 = "neura.add"(%128) {dfg_id = 118 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %130 = "neura.data_mov"(%129) {dfg_id = 127 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %131 = "neura.data_mov"(%95) {dfg_id = 133 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %132 = "neura.icmp"(%130, %131) <{cmpType = "eq"}> {dfg_id = 141 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %133 = "neura.data_mov"(%132) {dfg_id = 151 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %134 = "neura.not"(%133) {dfg_id = 159 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %135 = "neura.data_mov"(%129) {dfg_id = 126 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 169 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 169 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %136 = "neura.data_mov"(%134) {dfg_id = 180 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 176 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %137 = neura.grant_predicate %135, %136 {dfg_id = 190 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %137 -> %105 {dfg_id = 201 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %138 = "neura.data_mov"(%104) {dfg_id = 124 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 2001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 2001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %139 = "neura.data_mov"(%134) {dfg_id = 179 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 14 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 19 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 2008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 2008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %140 = neura.grant_predicate %138, %139 {dfg_id = 189 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %140 -> %102 {dfg_id = 200 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 210 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 20 : i32}, {id = 210 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 21 : i32}, {id = 210 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 22 : i32}, {id = 210 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 23 : i32}, {id = 210 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 24 : i32}, {id = 210 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 25 : i32}, {id = 210 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 26 : i32}, {id = 210 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 27 : i32}, {id = 210 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 28 : i32}, {id = 210 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 29 : i32}, {id = 210 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 30 : i32}, {id = 210 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %141 = "neura.data_mov"(%101) {dfg_id = 106 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 1001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 1001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 1001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 1001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 1001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %142 = "neura.data_mov"(%134) {dfg_id = 178 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 15 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 1008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 1008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 1008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 1008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %143 = neura.grant_predicate %141, %142 {dfg_id = 188 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %143 -> %99 {dfg_id = 199 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 4016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 4016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 4016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 4016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 4016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %144 = "neura.data_mov"(%98) {dfg_id = 103 : i32, mapping_locs = [{id = 209 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 209 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 209 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 209 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 209 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}, {id = 209 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}, {id = 209 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 209 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 209 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 209 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 209 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %145 = "neura.data_mov"(%134) {dfg_id = 177 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 14 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 195 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 195 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 195 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 195 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 195 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 195 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 195 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 195 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 195 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 195 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %146 = neura.grant_predicate %144, %145 {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %146 -> %96 {dfg_id = 198 : i32, mapping_locs = [{id = 201 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 201 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 201 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 201 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}, {id = 201 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 27 : i32}, {id = 201 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %147 = "neura.data_mov"(%95) {dfg_id = 132 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %148 = "neura.data_mov"(%134) {dfg_id = 176 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %149 = neura.grant_predicate %147, %148 {dfg_id = 186 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %149 -> %93 {dfg_id = 197 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 296 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 296 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %150 = "neura.data_mov"(%92) {dfg_id = 135 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 322 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 322 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 322 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 322 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 322 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 322 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 322 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 322 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %151 = "neura.data_mov"(%134) {dfg_id = 175 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %152 = neura.grant_predicate %150, %151 {dfg_id = 185 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %152 -> %90 {dfg_id = 196 : i32, mapping_locs = [{id = 330 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 330 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 330 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 330 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 330 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 330 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 330 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 330 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %153 = "neura.data_mov"(%89) {dfg_id = 137 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 2 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 2 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %154 = "neura.data_mov"(%134) {dfg_id = 174 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 11 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %155 = neura.grant_predicate %153, %154 {dfg_id = 184 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %155 -> %87 {dfg_id = 195 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 4012 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 20 : i32}, {id = 4012 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 21 : i32}, {id = 4012 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 22 : i32}, {id = 4012 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 23 : i32}, {id = 4012 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 24 : i32}, {id = 4012 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 25 : i32}, {id = 4012 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 26 : i32}, {id = 4012 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 27 : i32}, {id = 4012 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 28 : i32}, {id = 4012 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %156 = "neura.data_mov"(%86) {dfg_id = 113 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 224 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %157 = "neura.data_mov"(%134) {dfg_id = 173 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 14 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 18 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 232 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 232 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 232 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 232 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 232 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %158 = neura.grant_predicate %156, %157 {dfg_id = 183 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %158 -> %84 {dfg_id = 194 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 203 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 20 : i32}, {id = 203 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 21 : i32}, {id = 203 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 22 : i32}, {id = 203 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 23 : i32}, {id = 203 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 24 : i32}, {id = 203 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 25 : i32}, {id = 203 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 203 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}, {id = 203 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 28 : i32}, {id = 203 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 29 : i32}, {id = 203 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 30 : i32}, {id = 203 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 31 : i32}, {id = 203 : i32, index_per_ii = 15 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %159 = "neura.data_mov"(%101) {dfg_id = 105 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %160 = "neura.data_mov"(%132) {dfg_id = 150 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %161 = neura.grant_predicate %159, %160 {dfg_id = 158 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %162 = "neura.data_mov"(%92) {dfg_id = 134 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %163 = "neura.data_mov"(%132) {dfg_id = 149 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %164 = neura.grant_predicate %162, %163 {dfg_id = 157 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %165 = "neura.data_mov"(%98) {dfg_id = 102 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %166 = "neura.data_mov"(%132) {dfg_id = 148 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %167 = neura.grant_predicate %165, %166 {dfg_id = 156 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %168 = "neura.data_mov"(%89) {dfg_id = 136 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %169 = "neura.data_mov"(%132) {dfg_id = 147 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %170 = neura.grant_predicate %168, %169 {dfg_id = 155 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %171 = "neura.data_mov"(%86) {dfg_id = 112 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %172 = "neura.data_mov"(%132) {dfg_id = 146 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 200 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 200 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %173 = neura.grant_predicate %171, %172 {dfg_id = 154 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %174 = "neura.data_mov"(%95) {dfg_id = 131 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %175 = "neura.data_mov"(%132) {dfg_id = 145 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %176 = neura.grant_predicate %174, %175 {dfg_id = 153 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %177 = "neura.data_mov"(%161) {dfg_id = 172 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %178 = "neura.add"(%177) {dfg_id = 182 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %179 = "neura.data_mov"(%178) {dfg_id = 193 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %180 = "neura.data_mov"(%164) {dfg_id = 171 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 297 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %181 = "neura.icmp"(%179, %180) <{cmpType = "eq"}> {dfg_id = 203 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %182 = "neura.data_mov"(%181) {dfg_id = 209 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %183 = "neura.not"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %184 = "neura.data_mov"(%178) {dfg_id = 192 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 161 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %185 = "neura.data_mov"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 169 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %186 = neura.grant_predicate %184, %185 {dfg_id = 234 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %186 -> %78 {dfg_id = 242 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %187 = "neura.data_mov"(%167) {dfg_id = 168 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 323 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 323 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 323 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 323 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 323 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 323 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 323 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %188 = "neura.data_mov"(%183) {dfg_id = 226 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 336 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 336 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 336 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 336 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %189 = neura.grant_predicate %187, %188 {dfg_id = 233 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %189 -> %75 {dfg_id = 241 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 208 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 208 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 208 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}, {id = 208 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %190 = "neura.data_mov"(%173) {dfg_id = 164 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %191 = "neura.data_mov"(%183) {dfg_id = 225 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %192 = neura.grant_predicate %190, %191 {dfg_id = 232 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %192 -> %72 {dfg_id = 240 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %193 = "neura.data_mov"(%176) {dfg_id = 162 : i32, mapping_locs = [{id = 298 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 11 : i32}, {id = 298 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 298 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 298 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 298 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 298 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 298 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 298 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %194 = "neura.data_mov"(%183) {dfg_id = 224 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 289 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %195 = neura.grant_predicate %193, %194 {dfg_id = 231 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %195 -> %69 {dfg_id = 239 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 297 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 297 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 297 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 297 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 297 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %196 = "neura.data_mov"(%164) {dfg_id = 170 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 321 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %197 = "neura.data_mov"(%183) {dfg_id = 223 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %198 = neura.grant_predicate %196, %197 {dfg_id = 230 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %198 -> %66 {dfg_id = 238 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 328 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 328 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 328 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %199 = "neura.data_mov"(%170) {dfg_id = 166 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 8001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 8001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 8001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 8001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %200 = "neura.data_mov"(%183) {dfg_id = 222 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 229 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %201 -> %63 {dfg_id = 237 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 4024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 4024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 4024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 4024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 4024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}, {id = 4024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 26 : i32}, {id = 4024 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 27 : i32}, {id = 4024 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %202 = "neura.data_mov"(%167) {dfg_id = 167 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %203 = "neura.data_mov"(%181) {dfg_id = 208 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %204 = neura.grant_predicate %202, %203 {dfg_id = 214 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %205 = "neura.data_mov"(%170) {dfg_id = 165 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %206 = "neura.data_mov"(%181) {dfg_id = 207 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %207 = neura.grant_predicate %205, %206 {dfg_id = 213 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %208 = "neura.data_mov"(%173) {dfg_id = 163 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = "neura.data_mov"(%181) {dfg_id = 206 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 33 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 201 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 201 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 201 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 212 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %211 = "neura.data_mov"(%176) {dfg_id = 161 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %212 = "neura.data_mov"(%181) {dfg_id = 205 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 211 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %214 = "neura.data_mov"(%164) {dfg_id = 169 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 297 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 297 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 297 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %215 = "neura.data_mov"(%181) {dfg_id = 204 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 210 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %217 = "neura.data_mov"(%204) {dfg_id = 221 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %218 = "neura.add"(%217) {dfg_id = 228 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %219 = "neura.data_mov"(%218) {dfg_id = 236 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %220 = "neura.data_mov"(%207) {dfg_id = 220 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 169 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %221 = "neura.icmp"(%219, %220) <{cmpType = "eq"}> {dfg_id = 243 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %222 = "neura.data_mov"(%221) {dfg_id = 246 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %223 = "neura.not"(%222) {dfg_id = 248 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %224 = "neura.data_mov"(%218) {dfg_id = 235 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 202 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 202 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 202 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 202 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 202 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %225 = "neura.data_mov"(%223) {dfg_id = 254 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %226 = neura.grant_predicate %224, %225 {dfg_id = 260 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %226 -> %60 {dfg_id = 266 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %227 = "neura.data_mov"(%210) {dfg_id = 218 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %228 = "neura.data_mov"(%223) {dfg_id = 253 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 169 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %229 = neura.grant_predicate %227, %228 {dfg_id = 259 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %229 -> %57 {dfg_id = 265 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4017 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %230 = "neura.data_mov"(%213) {dfg_id = 217 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 33 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %231 = "neura.data_mov"(%223) {dfg_id = 252 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 258 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %232 -> %54 {dfg_id = 264 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %233 = "neura.data_mov"(%216) {dfg_id = 216 : i32, mapping_locs = [{id = 299 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 16 : i32}, {id = 299 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 17 : i32}, {id = 299 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 18 : i32}, {id = 299 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 19 : i32}, {id = 299 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %234 = "neura.data_mov"(%223) {dfg_id = 251 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 257 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %235 -> %51 {dfg_id = 263 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 329 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 329 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 329 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 329 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %236 = "neura.data_mov"(%207) {dfg_id = 219 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 290 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 290 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 290 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 290 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %237 = "neura.data_mov"(%223) {dfg_id = 250 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %238 = neura.grant_predicate %236, %237 {dfg_id = 256 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %238 -> %48 {dfg_id = 262 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 25 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4011 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 22 : i32}, {id = 4011 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 23 : i32}, {id = 4011 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 24 : i32}, {id = 4011 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 25 : i32}, {id = 4011 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 4011 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %239 = "neura.data_mov"(%221) {dfg_id = 244 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %240 = "neura.data_mov"(%221) {dfg_id = 245 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %241 = neura.grant_predicate %239, %240 {dfg_id = 247 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %242 = "neura.data_mov"(%41) {dfg_id = 72 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %243 = "neura.data_mov"(%241) {dfg_id = 249 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %244 = "neura.phi"(%242, %243) {dfg_id = 255 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %245 = "neura.data_mov"(%244) {dfg_id = 261 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %245 : !neura.data {dfg_id = 267 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 0 : i32}]} -// MAPPING-NEXT: neura.yield {dfg_id = 26 : i32} -// MAPPING-NEXT: } -// MAPPING-NEXT: } -// +// MAPPING: func.func @kernel_int(%arg0: i32 {llvm.noundef}, %arg1: i32 {llvm.noundef}, %arg2: i32 {llvm.noundef}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 17 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 13 : i32, res_mii = 6 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = "%arg1"}> {dfg_id = 2 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 1 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %3 = "neura.constant"() <{value = "%arg1"}> {dfg_id = 3 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 1 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %4 = "neura.grant_once"() <{constant_value = "%arg2"}> {dfg_id = 4 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %5 = "neura.constant"() <{value = "%arg2"}> {dfg_id = 5 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %6 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 6 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %7 = "neura.data_mov"(%1) {dfg_id = 28 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %8 = "neura.icmp"(%7) <{cmpType = "sgt"}> {dfg_id = 34 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.data_mov"(%5) {dfg_id = 32 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.icmp"(%9) <{cmpType = "sgt"}> {dfg_id = 36 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 2 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.data_mov"(%8) {dfg_id = 37 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%10) {dfg_id = 39 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = "neura.and"(%11, %12) {dfg_id = 40 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%3) {dfg_id = 30 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.icmp"(%14) <{cmpType = "sgt"}> {dfg_id = 35 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = "neura.data_mov"(%13) {dfg_id = 41 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%15) {dfg_id = 38 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.and"(%16, %17) {dfg_id = 42 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %19 = "neura.data_mov"(%18) {dfg_id = 44 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = "neura.grant_once"(%19) {dfg_id = 46 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = "neura.data_mov"(%18) {dfg_id = 43 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %22 = "neura.not"(%21) {dfg_id = 45 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.data_mov"(%22) {dfg_id = 47 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %24 = "neura.grant_once"(%23) {dfg_id = 53 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.data_mov"(%0) {dfg_id = 27 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%20) {dfg_id = 52 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = neura.grant_predicate %25, %26 {dfg_id = 58 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%4) {dfg_id = 31 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%20) {dfg_id = 51 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 57 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%2) {dfg_id = 29 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%20) {dfg_id = 50 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 56 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%6) {dfg_id = 33 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.data_mov"(%20) {dfg_id = 49 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 55 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%20) {dfg_id = 48 : i32, mapping_locs = [{id = 4010 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 4 : i32}, {id = 4010 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 5 : i32}, {id = 4010 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 6 : i32}, {id = 4010 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 7 : i32}, {id = 4010 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 8 : i32}, {id = 4010 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 9 : i32}, {id = 4010 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 10 : i32}, {id = 4010 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 11 : i32}, {id = 4010 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 4010 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 4010 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 4010 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %38 = "neura.not"(%37) {dfg_id = 54 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %39 = "neura.data_mov"(%24) {dfg_id = 59 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %40 = "neura.data_mov"(%38) {dfg_id = 60 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %41 = neura.grant_predicate %39, %40 {dfg_id = 66 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %42 = "neura.data_mov"(%27) {dfg_id = 65 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %43 = neura.zext %42 {dfg_id = 71 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %44 = "neura.data_mov"(%30) {dfg_id = 64 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %45 = neura.zext %44 {dfg_id = 70 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %46 = "neura.data_mov"(%33) {dfg_id = 63 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %47 = neura.zext %46 {dfg_id = 69 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %48 = neura.reserve {dfg_id = 7 : i32} : !neura.data +// MAPPING-NEXT: %49 = "neura.data_mov"(%43) {dfg_id = 78 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %50 = neura.phi_start %49, %48 {dfg_id = 84 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %51 = neura.reserve {dfg_id = 8 : i32} : !neura.data +// MAPPING-NEXT: %52 = "neura.data_mov"(%45) {dfg_id = 77 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %53 = neura.phi_start %52, %51 {dfg_id = 83 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %54 = neura.reserve {dfg_id = 9 : i32} : !neura.data +// MAPPING-NEXT: %55 = "neura.data_mov"(%47) {dfg_id = 76 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %56 = neura.phi_start %55, %54 {dfg_id = 82 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %57 = neura.reserve {dfg_id = 10 : i32} : !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%36) {dfg_id = 62 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %59 = neura.phi_start %58, %57 {dfg_id = 68 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %60 = neura.reserve {dfg_id = 11 : i32} : !neura.data +// MAPPING-NEXT: %61 = "neura.data_mov"(%36) {dfg_id = 61 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 14 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 192 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %62 = neura.phi_start %61, %60 {dfg_id = 67 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %63 = neura.reserve {dfg_id = 12 : i32} : !neura.data +// MAPPING-NEXT: %64 = "neura.data_mov"(%50) {dfg_id = 93 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %65 = neura.phi_start %64, %63 {dfg_id = 101 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %66 = neura.reserve {dfg_id = 13 : i32} : !neura.data +// MAPPING-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 92 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %68 = neura.phi_start %67, %66 {dfg_id = 100 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %69 = neura.reserve {dfg_id = 14 : i32} : !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%56) {dfg_id = 91 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %71 = neura.phi_start %70, %69 {dfg_id = 99 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %72 = neura.reserve {dfg_id = 15 : i32} : !neura.data +// MAPPING-NEXT: %73 = "neura.data_mov"(%59) {dfg_id = 75 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %74 = neura.phi_start %73, %72 {dfg_id = 81 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %75 = neura.reserve {dfg_id = 16 : i32} : !neura.data +// MAPPING-NEXT: %76 = "neura.data_mov"(%62) {dfg_id = 73 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %77 = neura.phi_start %76, %75 {dfg_id = 79 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %78 = neura.reserve {dfg_id = 17 : i32} : !neura.data +// MAPPING-NEXT: %79 = "neura.data_mov"(%59) {dfg_id = 74 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = neura.phi_start %79, %78 {dfg_id = 80 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%77) {dfg_id = 86 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 208 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 208 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.data_mov"(%80) {dfg_id = 88 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 176 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}, {id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 201 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 201 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = "neura.gep"(%81, %82) <{operandSegmentSizes = array}> {dfg_id = 96 : i32, lhs_value = "%arg4", mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %84 = neura.reserve {dfg_id = 18 : i32} : !neura.data +// MAPPING-NEXT: %85 = "neura.data_mov"(%74) {dfg_id = 90 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 193 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 193 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 193 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 193 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 193 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 193 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 193 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 193 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %86 = neura.phi_start %85, %84 {dfg_id = 98 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %87 = neura.reserve {dfg_id = 19 : i32} : !neura.data +// MAPPING-NEXT: %88 = "neura.data_mov"(%65) {dfg_id = 116 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %89 = neura.phi_start %88, %87 {dfg_id = 123 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %90 = neura.reserve {dfg_id = 20 : i32} : !neura.data +// MAPPING-NEXT: %91 = "neura.data_mov"(%68) {dfg_id = 115 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %92 = neura.phi_start %91, %90 {dfg_id = 122 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %93 = neura.reserve {dfg_id = 21 : i32} : !neura.data +// MAPPING-NEXT: %94 = "neura.data_mov"(%71) {dfg_id = 114 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %95 = neura.phi_start %94, %93 {dfg_id = 121 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %96 = neura.reserve {dfg_id = 22 : i32} : !neura.data +// MAPPING-NEXT: %97 = "neura.data_mov"(%77) {dfg_id = 85 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %98 = neura.phi_start %97, %96 {dfg_id = 94 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %99 = neura.reserve {dfg_id = 23 : i32} : !neura.data +// MAPPING-NEXT: %100 = "neura.data_mov"(%80) {dfg_id = 87 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %101 = neura.phi_start %100, %99 {dfg_id = 95 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %102 = neura.reserve {dfg_id = 24 : i32} : !neura.data +// MAPPING-NEXT: %103 = "neura.data_mov"(%83) {dfg_id = 108 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %104 = neura.phi_start %103, %102 {dfg_id = 117 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %105 = neura.reserve {dfg_id = 25 : i32} : !neura.data +// MAPPING-NEXT: %106 = "neura.data_mov"(%74) {dfg_id = 89 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %107 = neura.phi_start %106, %105 {dfg_id = 97 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %108 = "neura.data_mov"(%104) {dfg_id = 125 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %109 = "neura.load"(%108) {dfg_id = 138 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %110 = "neura.data_mov"(%101) {dfg_id = 107 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %111 = "neura.data_mov"(%107) {dfg_id = 111 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 4009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 4009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 4009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 4009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 4009 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %112 = "neura.gep"(%110, %111) <{operandSegmentSizes = array}> {dfg_id = 120 : i32, lhs_value = "%arg5", mapping_locs = [{id = 4 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 130 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %114 = "neura.load"(%113) {dfg_id = 140 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 144 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 28 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = "neura.data_mov"(%109) {dfg_id = 142 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %117 = "neura.mul"(%115, %116) {dfg_id = 152 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %118 = "neura.data_mov"(%98) {dfg_id = 104 : i32, mapping_locs = [{id = 209 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 209 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 209 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 209 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 209 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %119 = "neura.data_mov"(%107) {dfg_id = 110 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 194 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 9 : i32}, {id = 194 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 194 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 194 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 194 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 194 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 194 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 194 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %120 = "neura.gep"(%118, %119) <{operandSegmentSizes = array}> {dfg_id = 119 : i32, lhs_value = "%arg3", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %121 = "neura.data_mov"(%120) {dfg_id = 129 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %122 = "neura.load"(%121) {dfg_id = 139 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %123 = "neura.data_mov"(%122) {dfg_id = 143 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 2000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %124 = "neura.data_mov"(%117) {dfg_id = 160 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %125 = "neura.add"(%123, %124) {dfg_id = 181 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 191 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %127 = "neura.data_mov"(%120) {dfg_id = 128 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 2009 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 2009 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 2009 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%126, %127) {dfg_id = 202 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %128 = "neura.data_mov"(%107) {dfg_id = 109 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %129 = "neura.add"(%128) {dfg_id = 118 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %130 = "neura.data_mov"(%129) {dfg_id = 127 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %131 = "neura.data_mov"(%95) {dfg_id = 133 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %132 = "neura.icmp"(%130, %131) <{cmpType = "eq"}> {dfg_id = 141 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %133 = "neura.data_mov"(%132) {dfg_id = 151 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %134 = "neura.not"(%133) {dfg_id = 159 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %135 = "neura.data_mov"(%129) {dfg_id = 126 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 169 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 169 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %136 = "neura.data_mov"(%134) {dfg_id = 180 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 176 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %137 = neura.grant_predicate %135, %136 {dfg_id = 190 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %137 -> %105 {dfg_id = 201 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 168 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 168 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 168 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 168 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 168 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 168 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %138 = "neura.data_mov"(%104) {dfg_id = 124 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 2001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 2001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 2001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %139 = "neura.data_mov"(%134) {dfg_id = 179 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 14 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 19 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 2008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 2008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %140 = neura.grant_predicate %138, %139 {dfg_id = 189 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %140 -> %102 {dfg_id = 200 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 210 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 20 : i32}, {id = 210 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 21 : i32}, {id = 210 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 22 : i32}, {id = 210 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 23 : i32}, {id = 210 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 24 : i32}, {id = 210 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 25 : i32}, {id = 210 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 26 : i32}, {id = 210 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 27 : i32}, {id = 210 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 28 : i32}, {id = 210 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 29 : i32}, {id = 210 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 30 : i32}, {id = 210 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 18 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %141 = "neura.data_mov"(%101) {dfg_id = 106 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 1001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 1001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 1001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 1001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 1001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %142 = "neura.data_mov"(%134) {dfg_id = 178 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 15 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 1008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 1008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 1008 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 1008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 1008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %143 = neura.grant_predicate %141, %142 {dfg_id = 188 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %143 -> %99 {dfg_id = 199 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 4016 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 4016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 4016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 4016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 4016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %144 = "neura.data_mov"(%98) {dfg_id = 103 : i32, mapping_locs = [{id = 209 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 12 : i32}, {id = 209 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 13 : i32}, {id = 209 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 14 : i32}, {id = 209 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 15 : i32}, {id = 209 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 16 : i32}, {id = 209 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 17 : i32}, {id = 209 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 18 : i32}, {id = 209 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 19 : i32}, {id = 209 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 20 : i32}, {id = 209 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 21 : i32}, {id = 209 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %145 = "neura.data_mov"(%134) {dfg_id = 177 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 14 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 195 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 195 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 195 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 195 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 195 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 195 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 195 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 195 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 195 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 195 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %146 = neura.grant_predicate %144, %145 {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %146 -> %96 {dfg_id = 198 : i32, mapping_locs = [{id = 201 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 201 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 201 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 201 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}, {id = 201 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 27 : i32}, {id = 201 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %147 = "neura.data_mov"(%95) {dfg_id = 132 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 296 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 296 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %148 = "neura.data_mov"(%134) {dfg_id = 176 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %149 = neura.grant_predicate %147, %148 {dfg_id = 186 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %149 -> %93 {dfg_id = 197 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 296 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 296 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 296 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %150 = "neura.data_mov"(%92) {dfg_id = 135 : i32, mapping_locs = [{id = 322 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 322 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 322 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 322 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 322 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 322 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 322 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 322 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 322 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %151 = "neura.data_mov"(%134) {dfg_id = 175 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 288 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 28 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %152 = neura.grant_predicate %150, %151 {dfg_id = 185 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %152 -> %90 {dfg_id = 196 : i32, mapping_locs = [{id = 330 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 330 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}, {id = 330 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 22 : i32}, {id = 330 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 23 : i32}, {id = 330 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 24 : i32}, {id = 330 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 25 : i32}, {id = 330 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 330 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %153 = "neura.data_mov"(%89) {dfg_id = 137 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 2 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 2 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %154 = "neura.data_mov"(%134) {dfg_id = 174 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 11 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %155 = neura.grant_predicate %153, %154 {dfg_id = 184 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %155 -> %87 {dfg_id = 195 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 4012 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 20 : i32}, {id = 4012 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 21 : i32}, {id = 4012 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 22 : i32}, {id = 4012 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 23 : i32}, {id = 4012 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 24 : i32}, {id = 4012 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 25 : i32}, {id = 4012 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 26 : i32}, {id = 4012 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 27 : i32}, {id = 4012 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 28 : i32}, {id = 4012 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 12 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %156 = "neura.data_mov"(%86) {dfg_id = 113 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 224 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 224 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %157 = "neura.data_mov"(%134) {dfg_id = 173 : i32, mapping_locs = [{id = 176 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 11 : i32}, {id = 14 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 18 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 232 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 232 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 232 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 232 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 232 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %158 = neura.grant_predicate %156, %157 {dfg_id = 183 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %158 -> %84 {dfg_id = 194 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 203 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 20 : i32}, {id = 203 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 21 : i32}, {id = 203 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 22 : i32}, {id = 203 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 23 : i32}, {id = 203 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 24 : i32}, {id = 203 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 25 : i32}, {id = 203 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 203 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}, {id = 203 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 28 : i32}, {id = 203 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 29 : i32}, {id = 203 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 30 : i32}, {id = 203 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 31 : i32}, {id = 203 : i32, index_per_ii = 15 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 32 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %159 = "neura.data_mov"(%101) {dfg_id = 105 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %160 = "neura.data_mov"(%132) {dfg_id = 150 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %161 = neura.grant_predicate %159, %160 {dfg_id = 158 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %162 = "neura.data_mov"(%92) {dfg_id = 134 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %163 = "neura.data_mov"(%132) {dfg_id = 149 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %164 = neura.grant_predicate %162, %163 {dfg_id = 157 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %165 = "neura.data_mov"(%98) {dfg_id = 102 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %166 = "neura.data_mov"(%132) {dfg_id = 148 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %167 = neura.grant_predicate %165, %166 {dfg_id = 156 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %168 = "neura.data_mov"(%89) {dfg_id = 136 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %169 = "neura.data_mov"(%132) {dfg_id = 147 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %170 = neura.grant_predicate %168, %169 {dfg_id = 155 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %171 = "neura.data_mov"(%86) {dfg_id = 112 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 192 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %172 = "neura.data_mov"(%132) {dfg_id = 146 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 200 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 200 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 200 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 200 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 200 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 200 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 200 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %173 = neura.grant_predicate %171, %172 {dfg_id = 154 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %174 = "neura.data_mov"(%95) {dfg_id = 131 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %175 = "neura.data_mov"(%132) {dfg_id = 145 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %176 = neura.grant_predicate %174, %175 {dfg_id = 153 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %177 = "neura.data_mov"(%161) {dfg_id = 172 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %178 = "neura.add"(%177) {dfg_id = 182 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %179 = "neura.data_mov"(%178) {dfg_id = 193 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %180 = "neura.data_mov"(%164) {dfg_id = 171 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 297 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %181 = "neura.icmp"(%179, %180) <{cmpType = "eq"}> {dfg_id = 203 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %182 = "neura.data_mov"(%181) {dfg_id = 209 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %183 = "neura.not"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %184 = "neura.data_mov"(%178) {dfg_id = 192 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 161 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %185 = "neura.data_mov"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 169 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %186 = neura.grant_predicate %184, %185 {dfg_id = 234 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %186 -> %78 {dfg_id = 242 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %187 = "neura.data_mov"(%167) {dfg_id = 168 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 323 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 323 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 323 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 323 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 323 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 323 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 323 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %188 = "neura.data_mov"(%183) {dfg_id = 226 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 336 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 16 : i32}, {id = 336 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 17 : i32}, {id = 336 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 18 : i32}, {id = 336 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 19 : i32}, {id = 336 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %189 = neura.grant_predicate %187, %188 {dfg_id = 233 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %189 -> %75 {dfg_id = 241 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 208 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 208 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}, {id = 208 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 26 : i32}, {id = 208 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %190 = "neura.data_mov"(%173) {dfg_id = 164 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %191 = "neura.data_mov"(%183) {dfg_id = 225 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %192 = neura.grant_predicate %190, %191 {dfg_id = 232 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %192 -> %72 {dfg_id = 240 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %193 = "neura.data_mov"(%176) {dfg_id = 162 : i32, mapping_locs = [{id = 298 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 11 : i32}, {id = 298 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 298 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 298 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 298 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 298 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 298 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 298 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %194 = "neura.data_mov"(%183) {dfg_id = 224 : i32, mapping_locs = [{id = 289 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 289 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 289 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 289 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %195 = neura.grant_predicate %193, %194 {dfg_id = 231 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %195 -> %69 {dfg_id = 239 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 297 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 297 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 297 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 297 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 297 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %196 = "neura.data_mov"(%164) {dfg_id = 170 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 321 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %197 = "neura.data_mov"(%183) {dfg_id = 223 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %198 = neura.grant_predicate %196, %197 {dfg_id = 230 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %198 -> %66 {dfg_id = 238 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 328 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 328 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 328 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %199 = "neura.data_mov"(%170) {dfg_id = 166 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8001 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 8001 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 8001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 8001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 8001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %200 = "neura.data_mov"(%183) {dfg_id = 222 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 229 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %201 -> %63 {dfg_id = 237 : i32, mapping_locs = [{id = 25 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 4024 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 21 : i32}, {id = 4024 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 22 : i32}, {id = 4024 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 23 : i32}, {id = 4024 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 24 : i32}, {id = 4024 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 25 : i32}, {id = 4024 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 26 : i32}, {id = 4024 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 27 : i32}, {id = 4024 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 24 : i32, resource = "register", time_step = 28 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %202 = "neura.data_mov"(%167) {dfg_id = 167 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 160 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %203 = "neura.data_mov"(%181) {dfg_id = 208 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %204 = neura.grant_predicate %202, %203 {dfg_id = 214 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %205 = "neura.data_mov"(%170) {dfg_id = 165 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %206 = "neura.data_mov"(%181) {dfg_id = 207 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %207 = neura.grant_predicate %205, %206 {dfg_id = 213 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %208 = "neura.data_mov"(%173) {dfg_id = 163 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = "neura.data_mov"(%181) {dfg_id = 206 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 33 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 201 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 201 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 201 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 212 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %211 = "neura.data_mov"(%176) {dfg_id = 161 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %212 = "neura.data_mov"(%181) {dfg_id = 205 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 211 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %214 = "neura.data_mov"(%164) {dfg_id = 169 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 297 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 297 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 297 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %215 = "neura.data_mov"(%181) {dfg_id = 204 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 210 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %217 = "neura.data_mov"(%204) {dfg_id = 221 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %218 = "neura.add"(%217) {dfg_id = 228 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %219 = "neura.data_mov"(%218) {dfg_id = 236 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %220 = "neura.data_mov"(%207) {dfg_id = 220 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 29 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 169 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %221 = "neura.icmp"(%219, %220) <{cmpType = "eq"}> {dfg_id = 243 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %222 = "neura.data_mov"(%221) {dfg_id = 246 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %223 = "neura.not"(%222) {dfg_id = 248 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %224 = "neura.data_mov"(%218) {dfg_id = 235 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 202 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}, {id = 202 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 18 : i32}, {id = 202 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 19 : i32}, {id = 202 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 20 : i32}, {id = 202 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %225 = "neura.data_mov"(%223) {dfg_id = 254 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %226 = neura.grant_predicate %224, %225 {dfg_id = 260 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %226 -> %60 {dfg_id = 266 : i32, mapping_locs = [{id = 200 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %227 = "neura.data_mov"(%210) {dfg_id = 218 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %228 = "neura.data_mov"(%223) {dfg_id = 253 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 169 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %229 = neura.grant_predicate %227, %228 {dfg_id = 259 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %229 -> %57 {dfg_id = 265 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4017 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 17 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %230 = "neura.data_mov"(%213) {dfg_id = 217 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 33 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 16 : i32}, {id = 193 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 193 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 193 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %231 = "neura.data_mov"(%223) {dfg_id = 252 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 258 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %232 -> %54 {dfg_id = 264 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 16 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 288 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %233 = "neura.data_mov"(%216) {dfg_id = 216 : i32, mapping_locs = [{id = 299 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 16 : i32}, {id = 299 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 17 : i32}, {id = 299 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 18 : i32}, {id = 299 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 19 : i32}, {id = 299 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %234 = "neura.data_mov"(%223) {dfg_id = 251 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 288 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 257 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %235 -> %51 {dfg_id = 263 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 329 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 329 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 329 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 329 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %236 = "neura.data_mov"(%207) {dfg_id = 219 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 15 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 15 : i32}, {id = 290 : i32, index_per_ii = 16 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 290 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 290 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 290 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %237 = "neura.data_mov"(%223) {dfg_id = 250 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %238 = neura.grant_predicate %236, %237 {dfg_id = 256 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %238 -> %48 {dfg_id = 262 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 25 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4011 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 22 : i32}, {id = 4011 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 23 : i32}, {id = 4011 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 24 : i32}, {id = 4011 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 25 : i32}, {id = 4011 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 4011 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %239 = "neura.data_mov"(%221) {dfg_id = 244 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %240 = "neura.data_mov"(%221) {dfg_id = 245 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %241 = neura.grant_predicate %239, %240 {dfg_id = 247 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %242 = "neura.data_mov"(%41) {dfg_id = 72 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %243 = "neura.data_mov"(%241) {dfg_id = 249 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %244 = "neura.phi"(%242, %243) {dfg_id = 255 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %245 = "neura.data_mov"(%244) {dfg_id = 261 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %245 : !neura.data {dfg_id = 267 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 0 : i32}]} +// MAPPING-NEXT: neura.yield {dfg_id = 26 : i32} +// MAPPING-NEXT: } +// MAPPING-NEXT: } + + // YAML: array_config: -// YAML-NEXT: columns: 4 -// YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 17 -// YAML-NEXT: cores: -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "0" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 66 -// YAML-NEXT: time_step: 17 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 184 -// YAML-NEXT: time_step: 19 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 1990001 -// YAML-NEXT: time_step: 20 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 6 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 52 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 58 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 71 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 13 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 174 -// YAML-NEXT: time_step: 13 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 14 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 137 -// YAML-NEXT: time_step: 14 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 15 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 45 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 16 -// YAML-NEXT: operations: +// YAML-NEXT: columns: 4 +// YAML-NEXT: rows: 4 +// YAML-NEXT: compiled_ii: 17 +// YAML-NEXT: cores: +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "0" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 66 +// YAML-NEXT: time_step: 17 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 184 +// YAML-NEXT: time_step: 19 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$2" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 1990000 +// YAML-NEXT: time_step: 20 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 6 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 43 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 52 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 8 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 58 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per // // ASM: # Compiled II: 17 // ASM: PE(0,0): // ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [EAST, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$8] -> [NORTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [NORTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [NORTH, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$2] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$1] -> [$0] (t=15, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=15) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=16, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=16) -// ASM: PE(1,0): +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [EAST, RED] (t=17, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$2], [$8] -> [NORTH, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [NORTH, RED] (t=20, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0] -> [NORTH, RED] (t=4, inv_iters=0) +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=8, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: ZEXT, [$0] -> [NORTH, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$2] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$1] -> [$0] (t=15, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=15) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [$0] -> [$0] (t=16, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=16) +// ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=18, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [WEST, RED] (t=19, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: PHI, [$0], [NORTH, RED] -> [$0] (t=21, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VOID, [$0] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=12, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=12) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) -// CHAIN-YAML-LABEL: core_id: "5" -// CHAIN-YAML - index_per_ii: 12 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "GRANT_PREDICATE" -// CHAIN-YAML: id: 158 -// CHAIN-YAML: time_step: 12 -// CHAIN-YAML: invalid_iterations: 0 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "$0" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - operand: "$8" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "$0" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - opcode: "DATA_MOV" -// CHAIN-YAML: id: 1790000 -// CHAIN-YAML: time_step: 12 -// CHAIN-YAML: invalid_iterations: 0 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "$16" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "EAST" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - opcode: "DATA_MOV" -// CHAIN-YAML: id: 1780000 -// CHAIN-YAML: time_step: 12 -// CHAIN-YAML: invalid_iterations: 0 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "$16" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "SOUTH" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - index_per_ii: 13 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "ADD" -// CHAIN-YAML: id: 182 -// CHAIN-YAML: time_step: 13 -// CHAIN-YAML: invalid_iterations: 0 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "$0" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - operand: "#1" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "NORTH" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - operand: "$1" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - index_per_ii: 14 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "GRANT_PREDICATE" -// CHAIN-YAML: id: 190 -// CHAIN-YAML: time_step: 14 -// CHAIN-YAML: invalid_iterations: 0 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "$9" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - operand: "$16" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "$8" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - opcode: "DATA_MOV" -// CHAIN-YAML: id: 167 -// CHAIN-YAML: time_step: 14 -// CHAIN-YAML: invalid_iterations: 0 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "EAST" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "$0" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML-LABEL: core_id: "6" -// CHAIN-YAML: - index_per_ii: 16 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "PHI_START" -// CHAIN-YAML: id: 98 -// CHAIN-YAML: time_step: 16 -// CHAIN-YAML: invalid_iterations: 0 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "$1" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - operand: "$11" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "EAST" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - operand: "$0" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - opcode: "DATA_MOV" -// CHAIN-YAML: id: 206 -// CHAIN-YAML: time_step: 16 -// CHAIN-YAML: invalid_iterations: 0 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "NORTH" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "$9" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - column: 3 -// CHAIN-YAML: row: 1 -// CHAIN-YAML: core_id: "7" -// CHAIN-YAML: entries: -// CHAIN-YAML: - entry_id: "entry0" -// CHAIN-YAML: instructions: -// CHAIN-YAML: - index_per_ii: 0 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "DATA_MOV" -// CHAIN-YAML: id: 113 -// CHAIN-YAML: time_step: 17 -// CHAIN-YAML: invalid_iterations: 1 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "WEST" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "$0" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - index_per_ii: 2 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "GRANT_PREDICATE" -// CHAIN-YAML: id: 183 -// CHAIN-YAML: time_step: 19 -// CHAIN-YAML: invalid_iterations: 1 -// CHAIN-YAML: src_operands: -// CHAIN-YAML: - operand: "$0" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - operand: "$8" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: dst_operands: -// CHAIN-YAML: - operand: "WEST" -// CHAIN-YAML: color: "RED" -// CHAIN-YAML: - index_per_ii: 14 -// CHAIN-YAML: operations: -// CHAIN-YAML: - opcode: "DATA_MOV" -// CHAIN-YAML: id: 173 -// CHAIN-YAML: time_step: 14 -// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML-LABEL: core_id: "5" +// CHAIN-YAML: - index_per_ii: 11 +// CHAIN-YAML: operations: +// CHAIN-YAML: - opcode: "NOT" +// CHAIN-YAML: id: 159 +// CHAIN-YAML: time_step: 11 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "$0" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "$16" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - operand: "NORTH" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - operand: "WEST" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - opcode: "DATA_MOV" +// CHAIN-YAML: id: 880000 +// CHAIN-YAML: time_step: 11 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "WEST" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "EAST" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - opcode: "DATA_MOV" +// CHAIN-YAML: id: 1060000 +// CHAIN-YAML: time_step: 11 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "WEST" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "SOUTH" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - opcode: "DATA_MOV" +// CHAIN-YAML: id: 105 +// CHAIN-YAML: time_step: 11 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "WEST" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "$0" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - index_per_ii: 12 +// CHAIN-YAML: operations: +// CHAIN-YAML: - opcode: "GRANT_PREDICATE" +// CHAIN-YAML: id: 158 +// CHAIN-YAML: time_step: 12 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "$0" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - operand: "$8" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "$0" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - opcode: "DATA_MOV" +// CHAIN-YAML: id: 1790000 +// CHAIN-YAML: time_step: 12 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "$16" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "EAST" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - opcode: "DATA_MOV" +// CHAIN-YAML: id: 1780000 +// CHAIN-YAML: time_step: 12 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "$16" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "SOUTH" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - index_per_ii: 13 +// CHAIN-YAML: operations: +// CHAIN-YAML: - opcode: "ADD" +// CHAIN-YAML: id: 182 +// CHAIN-YAML: time_step: 13 +// CHAIN-YAML: invalid_iterations: 0 +// CHAIN-YAML: src_operands: +// CHAIN-YAML: - operand: "$0" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - operand: "#1" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: dst_operands: +// CHAIN-YAML: - operand: "NORTH" +// CHAIN-YAML: color: "RED" +// CHAIN-YAML: - operand: "$1" +// CHAIN-YAML: color: "RED" // CHAIN-ASM-LABEL: PE(1,1): -// CHAIN-ASM: GRANT_PREDICATE, [$1], [$9] -> [WEST, RED] (t=17, inv_iters=1) -// CHAIN-ASM: DATA_MOV, [NORTH, RED] -> [$9] (t=17, inv_iters=1) -// CHAIN-ASM: ICMP_EQ, [$0], [$9] -> [$0] (t=18, inv_iters=1) -// CHAIN-ASM: NOT, [$0] -> [EAST, RED], [$9], [NORTH, RED] (t=19, inv_iters=1) -// CHAIN-ASM: GRANT_PREDICATE, [$0], [$0] -> [SOUTH, RED] (t=20, inv_iters=1) -// CHAIN-ASM-LABEL: PE(2,1): -// CHAIN-ASM: GEP, [arg3], [$17], [$2] -> [SOUTH, RED] (t=17, inv_iters=1) -// CHAIN-ASM: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) +// CHAIN-ASM: GRANT_PREDICATE, [$1], [$9] -> [WEST, RED] (t=17, inv_iters=1) +// CHAIN-ASM: DATA_MOV, [NORTH, RED] -> [$9] (t=17, inv_iters=1) +// CHAIN-ASM: ICMP_EQ, [$0], [$9] -> [$0] (t=18, inv_iters=1) +// CHAIN-ASM: NOT, [$0] -> [EAST, RED], [$9], [NORTH, RED] (t=19, inv_iters=1) +// CHAIN-ASM: GRANT_PREDICATE, [$0], [$0] -> [SOUTH, RED] (t=20, inv_iters=1) +// CHAIN-ASM: DATA_MOV, [EAST, RED] -> [$0] (t=20, inv_iters=1) +// CHAIN-ASM: GRANT_PREDICATE, [$0], [$9] -> [WEST, RED] (t=21, inv_iters=1) +// CHAIN-ASM: CTRL_MOV, [NORTH, RED] -> [$1] (t=21, inv_iters=1) +// CHAIN-ASM: CTRL_MOV, [EAST, RED] -> [NORTH, RED] (t=21, inv_iters=1) +// CHAIN-ASM: GRANT_PREDICATE, [EAST, RED], [WEST, RED] -> [$0] (t=5, inv_iters=0) +// CHAIN-ASM: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=5, inv_iters=0) +// CHAIN-ASM: ZEXT, [$0] -> [NORTH, RED] (t=6, inv_iters=0) +// CHAIN-ASM: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=6, inv_iters=0) +// CHAIN-ASM: PHI_START, [WEST, RED], [$1] -> [EAST, RED], [$0] (t=7, inv_iters=0) +// CHAIN-ASM: PHI_START, [$0], [$8] -> [WEST, RED], [EAST, RED], [$0] (t=8, inv_iters=0) +// CHAIN-ASM: ADD, [$0], [#1] -> [$0], [$9] (t=9, inv_iters=0) +// CHAIN-ASM: ICMP_EQ, [$0], [NORTH, RED] -> [$0], [$8], [NORTH, RED], [EAST, RED], [WEST, RED] (t=10, inv_iters=0) +// CHAIN-ASM: NOT, [$0] -> [$16], [NORTH, RED], [WEST, RED] (t=11, inv_iters=0) +// CHAIN-ASM: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=11, inv_iters=0) +// CHAIN-ASM: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=11, inv_iters=0) +// CHAIN-ASM: DATA_MOV, [WEST, RED] -> [$0] (t=11, inv_iters=0) +// CHAIN-ASM: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=12, inv_iters=0) +// CHAIN-ASM: DATA_MOV, [$16] -> [EAST, RED] (t=12, inv_iters=0) +// CHAIN-ASM: DATA_MOV, [$16] -> [SOUTH, RED] (t=12, inv_iters=0) +// CHAIN-ASM: ADD, [$0], [#1] -> [NORTH, RED], [$1] (t=13, inv_iters=0) +// CHAIN-ASM: GRANT_PREDICATE, [$9], [$16] -> [$8] (t=14, inv_iters=0) +// CHAIN-ASM: DATA_MOV, [EAST, RED] -> [$0] (t=14, inv_iters=0) +// CHAIN-ASM: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$0] (t=15, inv_iters=0) +// CHAIN-ASM: ADD, [$0], [#1] -> [$0], [EAST, RED] (t=16, inv_iters=0) +// CHAIN-ASM: DATA_MOV, [NORTH, RED] -> [$9] (t=16, inv_iters=0) -// CHAIN-DFG: - id: 179 -// CHAIN-DFG: opcode: "DATA_MOV" -// CHAIN-DFG: tile_x: 2 -// CHAIN-DFG: tile_y: 0 -// CHAIN-DFG: time_step: 18 -// CHAIN-DFG: - id: 189 -// CHAIN-DFG: opcode: "GRANT_PREDICATE" -// CHAIN-DFG: tile_x: 2 -// CHAIN-DFG: tile_y: 0 -// CHAIN-DFG: time_step: 19 -// CHAIN-DFG: - id: 190 -// CHAIN-DFG: opcode: "GRANT_PREDICATE" -// CHAIN-DFG: tile_x: 1 -// CHAIN-DFG: tile_y: 1 -// CHAIN-DFG: time_step: 14 -// CHAIN-DFG: - id: 2170000 -// CHAIN-DFG: opcode: "DATA_MOV" -// CHAIN-DFG: tile_x: 2 -// CHAIN-DFG: tile_y: 2 -// CHAIN-DFG: time_step: 16 -// CHAIN-DFG: - id: 2200001 -// CHAIN-DFG: opcode: "DATA_MOV" -// CHAIN-DFG: tile_x: 1 -// CHAIN-DFG: tile_y: 2 -// CHAIN-DFG: time_step: 16 -// CHAIN-DFG: - id: 2400001 -// CHAIN-DFG: opcode: "CTRL_MOV" -// CHAIN-DFG: tile_x: 1 -// CHAIN-DFG: tile_y: 2 -// CHAIN-DFG: time_step: 20 -// CHAIN-DFG: - id: 2620001 -// CHAIN-DFG: opcode: "CTRL_MOV" -// CHAIN-DFG: tile_x: 0 -// CHAIN-DFG-NEXT: tile_y: 2 -// CHAIN-DFG-NEXT: time_step: 21 -// CHAIN-DFG-NEXT: - id: 2640001 -// CHAIN-DFG-NEXT: opcode: "CTRL_MOV" -// CHAIN-DFG-NEXT: tile_x: 1 -// CHAIN-DFG-NEXT: tile_y: 1 -// CHAIN-DFG-NEXT: time_step: 21 -// CHAIN-DFG-NEXT:edges: -// CHAIN-DFG-NEXT: - from: 42 -// CHAIN-DFG-NEXT: to: 43 -// CHAIN-DFG-NEXT: - from: 43 -// CHAIN-DFG-NEXT: to: 45 -// CHAIN-DFG-NEXT: - from: 46 -// CHAIN-DFG-NEXT: to: 52 -// CHAIN-DFG-NEXT: - from: 52 -// CHAIN-DFG-NEXT: to: 58 -// CHAIN-DFG-NEXT: - from: 262 -// CHAIN-DFG-NEXT: to: 84 -// CHAIN-DFG-NEXT: - from: 263 -// CHAIN-DFG-NEXT: to: 83 -// CHAIN-DFG-NEXT: - from: 264 -// CHAIN-DFG-NEXT: to: 82 -// CHAIN-DFG-NEXT: - from: 265 -// CHAIN-DFG-NEXT: to: 68 -// CHAIN-DFG-NEXT: - from: 237 -// CHAIN-DFG-NEXT: to: 101 -// CHAIN-DFG-NEXT: - from: 240 -// CHAIN-DFG-NEXT: to: 81 -// CHAIN-DFG-NEXT: - from: 241 -// CHAIN-DFG-NEXT: to: 79 -// CHAIN-DFG-NEXT: - from: 242 -// CHAIN-DFG-NEXT: to: 80 -// CHAIN-DFG-NEXT: - from: 81 -// CHAIN-DFG-NEXT: to: 90 -// CHAIN-DFG-NEXT: - from: 90 -// CHAIN-DFG-NEXT: to: 98 -// CHAIN-DFG-NEXT: - from: 194 -// CHAIN-DFG-NEXT: to: 98 -// CHAIN-DFG-NEXT: - from: 195 -// CHAIN-DFG-NEXT: to: 123 -// CHAIN-DFG-NEXT: - from: 199 -// CHAIN-DFG-NEXT: to: 95 -// CHAIN-DFG-NEXT: - from: 200 -// CHAIN-DFG-NEXT: to: 117 -// CHAIN-DFG-NEXT: - from: 97 -// CHAIN-DFG-NEXT: to: 111 -// CHAIN-DFG-NEXT: - from: 111 -// CHAIN-DFG-NEXT: to: 120 -// CHAIN-DFG-NEXT: - from: 97 -// CHAIN-DFG-NEXT: to: 110 -// CHAIN-DFG-NEXT: - from: 110 -// CHAIN-DFG-NEXT: to: 119 -// CHAIN-DFG-NEXT: - from: 119 -// CHAIN-DFG-NEXT: to: 128 -// CHAIN-DFG-NEXT: - from: 128 -// CHAIN-DFG-NEXT: to: 202 -// CHAIN-DFG-NEXT: - from: 117 -// CHAIN-DFG-NEXT: to: 124 -// CHAIN-DFG-NEXT: - from: 124 -// CHAIN-DFG-NEXT: to: 189 -// CHAIN-DFG-NEXT: - from: 189 -// CHAIN-DFG-NEXT: to: 200 -// CHAIN-DFG-NEXT: - from: 159 -// CHAIN-DFG-NEXT: to: 176 -// CHAIN-DFG-NEXT: - from: 176 -// CHAIN-DFG-NEXT: to: 186 -// CHAIN-DFG-NEXT: - from: 123 -// CHAIN-DFG-NEXT: to: 137 -// CHAIN-DFG-NEXT: - from: 137 -// CHAIN-DFG-NEXT: to: 184 -// CHAIN-DFG-NEXT: - from: 184 -// CHAIN-DFG-NEXT: to: 195 \ No newline at end of file +// CHAIN-DFG: - id: 179 +// CHAIN-DFG: opcode: "DATA_MOV" +// CHAIN-DFG: tile_x: 2 +// CHAIN-DFG: tile_y: 0 +// CHAIN-DFG: time_step: 14 +// CHAIN-DFG: - id: 181 +// CHAIN-DFG: opcode: "ADD" +// CHAIN-DFG: tile_x: 2 +// CHAIN-DFG: tile_y: 0 +// CHAIN-DFG: time_step: 20 +// CHAIN-DFG: - id: 182 +// CHAIN-DFG: opcode: "ADD" +// CHAIN-DFG: tile_x: 1 +// CHAIN-DFG: tile_y: 1 +// CHAIN-DFG: time_step: 13 +// CHAIN-DFG: - id: 183 +// CHAIN-DFG: opcode: "GRANT_PREDICATE" +// CHAIN-DFG: tile_x: 3 +// CHAIN-DFG: tile_y: 1 +// CHAIN-DFG: time_step: 19 +// CHAIN-DFG: - id: 184 +// CHAIN-DFG: opcode: "GRANT_PREDICATE" +// CHAIN-DFG: tile_x: 0 +// CHAIN-DFG: tile_y: 0 +// CHAIN-DFG: time_step: 19 +// CHAIN-DFG: - id: 185 +// CHAIN-DFG: opcode: "GRANT_PREDICATE" +// CHAIN-DFG: tile_x: 2 +// CHAIN-DFG: tile_y: 2 +// CHAIN-DFG: time_step: 20 +// CHAIN-DFG: - id: 186 +// CHAIN-DFG: opcode: "GRANT_PREDICATE" +// CHAIN-DFG: tile_x: 1 +// CHAIN-DFG: tile_y: 2 +// CHAIN-DFG: time_step: 13 +// CHAIN-DFG: - id: 187 +// CHAIN-DFG: opcode: "GRANT_PREDICATE" +// CHAIN-DFG: tile_x: 2 +// CHAIN-DFG: tile_y: 1 +// CHAIN-DFG: time_step: 23 +// CHAIN-DFG: - id: 188 +// CHAIN-DFG: opcode: "GRANT_PREDICATE" +// CHAIN-DFG: tile_x: 1 +// CHAIN-DFG: tile_y: 0 +// CHAIN-DFG: time_step: 19 +// CHAIN-DFG: - id: 189 +// CHAIN-DFG: opcode: "GRANT_PREDICATE" +// CHAIN-DFG: tile_x: 2 +// CHAIN-DFG: tile_y: 0 +// CHAIN-DFG: time_step: 19 +// CHAIN-DFG: - id: 190 +// CHAIN-DFG: opcode: "GRANT_PREDICATE" +// CHAIN-DFG: tile_x: 1 +// CHAIN-DFG: tile_y: 1 +// CHAIN-DFG: time_step: 14 +// CHAIN-DFG: - id: 194 +// CHAIN-DFG: opcode: "CTRL_MOV" +// CHAIN-DFG: tile_x: 2 +// CHAIN-DFG: tile_y: 1 +// CHAIN-DFG: time_step: 32 +// CHAIN-DFG: - id: 195 +// CHAIN-DFG: from: 110 +// CHAIN-DFG-NEXT: to: 119 +// CHAIN-DFG-NEXT: - from: 119 +// CHAIN-DFG-NEXT: to: 128 +// CHAIN-DFG-NEXT: - from: 128 +// CHAIN-DFG-NEXT: to: 202 +// CHAIN-DFG-NEXT: - from: 117 +// CHAIN-DFG-NEXT: to: 124 +// CHAIN-DFG-NEXT: - from: 124 +// CHAIN-DFG-NEXT: to: 189 +// CHAIN-DFG-NEXT: - from: 189 +// CHAIN-DFG-NEXT: to: 200 +// CHAIN-DFG-NEXT: - from: 159 +// CHAIN-DFG-NEXT: to: 176 +// CHAIN-DFG-NEXT: - from: 176 +// CHAIN-DFG-NEXT: to: 186 +// CHAIN-DFG-NEXT: - from: 123 +// CHAIN-DFG-NEXT: to: 137 +// CHAIN-DFG-NEXT: - from: 137 +// CHAIN-DFG-NEXT: to: 184 +// CHAIN-DFG-NEXT: - from: 184 +// CHAIN-DFG-NEXT: to: 195 +// CHAIN-DFG-NEXT: - from: 98 +// CHAIN-DFG-NEXT: to: 113 +// CHAIN-DFG-NEXT: - from: 113 +// CHAIN-DFG-NEXT: to: 183 +// CHAIN-DFG-NEXT: - from: 183 +// CHAIN-DFG-NEXT: to: 194 +// CHAIN-DFG-NEXT: - from: 95 +// CHAIN-DFG-NEXT: to: 105 +// CHAIN-DFG-NEXT: - from: 105 +// CHAIN-DFG-NEXT: to: 158 +// CHAIN-DFG-NEXT: - from: 141 +// CHAIN-DFG-NEXT: to: 149 +// CHAIN-DFG-NEXT: - from: 149 +// CHAIN-DFG-NEXT: to: 157 +// CHAIN-DFG-NEXT: - from: 141 +// CHAIN-DFG-NEXT: to: 148 +// CHAIN-DFG-NEXT: - from: 148 +// CHAIN-DFG-NEXT: to: 156 +// CHAIN-DFG-NEXT: - from: 141 +// CHAIN-DFG-NEXT: to: 147 +// CHAIN-DFG-NEXT: - from: 147 +// CHAIN-DFG-NEXT: to: 155 \ No newline at end of file diff --git a/test/e2e/gemv/gemv_kernel.mlir b/test/e2e/gemv/gemv_kernel.mlir index 7b31568e..475e7b6d 100644 --- a/test/e2e/gemv/gemv_kernel.mlir +++ b/test/e2e/gemv/gemv_kernel.mlir @@ -22,499 +22,346 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.yaml --check-prefix=YAML // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // -// MAPPING: func.func @kernel_gemv_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 11 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 3 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data -// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 14 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %4 = neura.phi_start %3, %2 {dfg_id = 17 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %5 = neura.reserve {dfg_id = 3 : i32} : !neura.data -// MAPPING-NEXT: %6 = "neura.data_mov"(%0) {dfg_id = 12 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = neura.phi_start %6, %5 {dfg_id = 15 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %8 = neura.reserve {dfg_id = 4 : i32} : !neura.data -// MAPPING-NEXT: %9 = "neura.data_mov"(%0) {dfg_id = 13 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = neura.phi_start %9, %8 {dfg_id = 16 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %11 = "neura.data_mov"(%10) {dfg_id = 21 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.shl"(%11) {dfg_id = 27 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = "neura.data_mov"(%12) {dfg_id = 37 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %14 = "neura.gep"(%13) <{operandSegmentSizes = array}> {dfg_id = 43 : i32, lhs_value = "%arg0", mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = neura.reserve {dfg_id = 5 : i32} : !neura.data -// MAPPING-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 23 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %17 = neura.phi_start %16, %15 {dfg_id = 29 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %18 = neura.reserve {dfg_id = 6 : i32} : !neura.data -// MAPPING-NEXT: %19 = "neura.data_mov"(%7) {dfg_id = 19 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 176 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = neura.phi_start %19, %18 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %21 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%10) {dfg_id = 20 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = neura.phi_start %22, %21 {dfg_id = 26 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %24 = neura.reserve {dfg_id = 8 : i32} : !neura.data -// MAPPING-NEXT: %25 = "neura.data_mov"(%14) {dfg_id = 47 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = neura.phi_start %25, %24 {dfg_id = 50 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %27 = neura.reserve {dfg_id = 9 : i32} : !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%4) {dfg_id = 22 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = neura.phi_start %28, %27 {dfg_id = 28 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %30 = neura.reserve {dfg_id = 10 : i32} : !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%7) {dfg_id = 18 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = neura.phi_start %31, %30 {dfg_id = 24 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %33 = "neura.data_mov"(%26) {dfg_id = 58 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%32) {dfg_id = 32 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.gep"(%33, %34) <{operandSegmentSizes = array}> {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 74 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %37 = "neura.load"(%36) {dfg_id = 82 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %38 = "neura.data_mov"(%32) {dfg_id = 31 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %39 = "neura.gep"(%38) <{operandSegmentSizes = array}> {dfg_id = 42 : i32, lhs_value = "%arg1", mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %40 = "neura.data_mov"(%39) {dfg_id = 46 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %41 = "neura.load"(%40) {dfg_id = 49 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %42 = "neura.data_mov"(%41) {dfg_id = 56 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %43 = "neura.data_mov"(%37) {dfg_id = 91 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %44 = "neura.mul"(%42, %43) {dfg_id = 93 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %45 = "neura.data_mov"(%44) {dfg_id = 97 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %46 = "neura.data_mov"(%29) {dfg_id = 38 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %47 = "neura.add"(%45, %46) {dfg_id = 100 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %48 = "neura.data_mov"(%32) {dfg_id = 30 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %49 = "neura.add"(%48) {dfg_id = 41 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %50 = "neura.data_mov"(%49) {dfg_id = 45 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %51 = "neura.icmp"(%50) <{cmpType = "eq"}> {dfg_id = 48 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %52 = "neura.data_mov"(%51) {dfg_id = 55 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %53 = "neura.not"(%52) {dfg_id = 62 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %54 = "neura.data_mov"(%49) {dfg_id = 44 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 4 : i32}, {id = 169 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 169 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %55 = "neura.data_mov"(%53) {dfg_id = 73 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %56 = neura.grant_predicate %54, %55 {dfg_id = 81 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %56 -> %30 {dfg_id = 90 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %57 = "neura.data_mov"(%47) {dfg_id = 106 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%53) {dfg_id = 72 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 208 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 208 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %59 = neura.grant_predicate %57, %58 {dfg_id = 112 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %59 -> %27 {dfg_id = 117 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 330 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 330 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 330 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 330 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 330 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 330 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %60 = "neura.data_mov"(%26) {dfg_id = 57 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %61 = "neura.data_mov"(%53) {dfg_id = 71 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 4009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 4009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 4009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %62 = neura.grant_predicate %60, %61 {dfg_id = 80 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %62 -> %24 {dfg_id = 89 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %63 = "neura.data_mov"(%23) {dfg_id = 36 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %64 = "neura.data_mov"(%53) {dfg_id = 70 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 4016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %65 = neura.grant_predicate %63, %64 {dfg_id = 79 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %65 -> %21 {dfg_id = 88 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 69 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %68 = neura.grant_predicate %66, %67 {dfg_id = 78 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %68 -> %18 {dfg_id = 87 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %69 = "neura.data_mov"(%17) {dfg_id = 40 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%53) {dfg_id = 68 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 328 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 328 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %71 = neura.grant_predicate %69, %70 {dfg_id = 77 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %71 -> %15 {dfg_id = 86 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 329 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 329 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %72 = "neura.data_mov"(%23) {dfg_id = 35 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %73 = "neura.data_mov"(%51) {dfg_id = 54 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %74 = neura.grant_predicate %72, %73 {dfg_id = 61 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %75 = "neura.data_mov"(%47) {dfg_id = 105 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %76 = "neura.data_mov"(%51) {dfg_id = 53 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %77 = neura.grant_predicate %75, %76 {dfg_id = 111 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %78 = "neura.data_mov"(%20) {dfg_id = 33 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %79 = "neura.data_mov"(%51) {dfg_id = 52 : i32, mapping_locs = [{id = 170 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 5 : i32}, {id = 170 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 6 : i32}, {id = 170 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 7 : i32}, {id = 170 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 8 : i32}, {id = 170 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = neura.grant_predicate %78, %79 {dfg_id = 60 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%17) {dfg_id = 39 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.data_mov"(%51) {dfg_id = 51 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = neura.grant_predicate %81, %82 {dfg_id = 59 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %84 = "neura.data_mov"(%74) {dfg_id = 67 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %85 = "neura.gep"(%84) <{operandSegmentSizes = array}> {dfg_id = 76 : i32, lhs_value = "%arg2", mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%77) {dfg_id = 116 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %87 = "neura.data_mov"(%85) {dfg_id = 85 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 118 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %88 = "neura.data_mov"(%74) {dfg_id = 66 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %89 = "neura.add"(%88) {dfg_id = 75 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 84 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %91 = "neura.icmp"(%90) <{cmpType = "eq"}> {dfg_id = 92 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %92 = "neura.data_mov"(%91) {dfg_id = 96 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %93 = "neura.not"(%92) {dfg_id = 99 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 83 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %95 = "neura.data_mov"(%93) {dfg_id = 104 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %96 = neura.grant_predicate %94, %95 {dfg_id = 110 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %96 -> %8 {dfg_id = 115 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %97 = "neura.data_mov"(%80) {dfg_id = 65 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 162 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %98 = "neura.data_mov"(%93) {dfg_id = 103 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %99 = neura.grant_predicate %97, %98 {dfg_id = 109 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %99 -> %5 {dfg_id = 114 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %100 = "neura.data_mov"(%83) {dfg_id = 64 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %101 = "neura.data_mov"(%93) {dfg_id = 102 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %102 = neura.grant_predicate %100, %101 {dfg_id = 108 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %102 -> %2 {dfg_id = 113 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %103 = "neura.data_mov"(%91) {dfg_id = 94 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %104 = "neura.data_mov"(%91) {dfg_id = 95 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %105 = neura.grant_predicate %103, %104 {dfg_id = 98 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %106 = "neura.data_mov"(%105) {dfg_id = 101 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %106 : !neura.data {dfg_id = 107 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} -// MAPPING-NEXT: neura.yield {dfg_id = 11 : i32} -// MAPPING-NEXT: } -// MAPPING-NEXT: } +// MAPPING: func.func @kernel_gemv_int(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 11 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 9 : i32, res_mii = 3 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data +// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 14 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %4 = neura.phi_start %3, %2 {dfg_id = 17 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %5 = neura.reserve {dfg_id = 3 : i32} : !neura.data +// MAPPING-NEXT: %6 = "neura.data_mov"(%0) {dfg_id = 12 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = neura.phi_start %6, %5 {dfg_id = 15 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %8 = neura.reserve {dfg_id = 4 : i32} : !neura.data +// MAPPING-NEXT: %9 = "neura.data_mov"(%0) {dfg_id = 13 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = neura.phi_start %9, %8 {dfg_id = 16 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %11 = "neura.data_mov"(%10) {dfg_id = 21 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.shl"(%11) {dfg_id = 27 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = "neura.data_mov"(%12) {dfg_id = 37 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %14 = "neura.gep"(%13) <{operandSegmentSizes = array}> {dfg_id = 43 : i32, lhs_value = "%arg0", mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = neura.reserve {dfg_id = 5 : i32} : !neura.data +// MAPPING-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 23 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 320 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %17 = neura.phi_start %16, %15 {dfg_id = 29 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %18 = neura.reserve {dfg_id = 6 : i32} : !neura.data +// MAPPING-NEXT: %19 = "neura.data_mov"(%7) {dfg_id = 19 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 176 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 3 : i32}, {id = 176 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 4 : i32}, {id = 176 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 5 : i32}, {id = 176 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 176 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = neura.phi_start %19, %18 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %21 = neura.reserve {dfg_id = 7 : i32} : !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%10) {dfg_id = 20 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 4000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = neura.phi_start %22, %21 {dfg_id = 26 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %24 = neura.reserve {dfg_id = 8 : i32} : !neura.data +// MAPPING-NEXT: %25 = "neura.data_mov"(%14) {dfg_id = 47 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = neura.phi_start %25, %24 {dfg_id = 50 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %27 = neura.reserve {dfg_id = 9 : i32} : !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%4) {dfg_id = 22 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = neura.phi_start %28, %27 {dfg_id = 28 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %30 = neura.reserve {dfg_id = 10 : i32} : !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%7) {dfg_id = 18 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = neura.phi_start %31, %30 {dfg_id = 24 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %33 = "neura.data_mov"(%26) {dfg_id = 58 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 160 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%32) {dfg_id = 32 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.gep"(%33, %34) <{operandSegmentSizes = array}> {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%35) {dfg_id = 74 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %37 = "neura.load"(%36) {dfg_id = 82 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %38 = "neura.data_mov"(%32) {dfg_id = 31 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %39 = "neura.gep"(%38) <{operandSegmentSizes = array}> {dfg_id = 42 : i32, lhs_value = "%arg1", mapping_locs = [{id = 6 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %40 = "neura.data_mov"(%39) {dfg_id = 46 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %41 = "neura.load"(%40) {dfg_id = 49 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %42 = "neura.data_mov"(%41) {dfg_id = 56 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %43 = "neura.data_mov"(%37) {dfg_id = 91 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %44 = "neura.mul"(%42, %43) {dfg_id = 93 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %45 = "neura.data_mov"(%44) {dfg_id = 97 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %46 = "neura.data_mov"(%29) {dfg_id = 38 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %47 = "neura.add"(%45, %46) {dfg_id = 100 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %48 = "neura.data_mov"(%32) {dfg_id = 30 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %49 = "neura.add"(%48) {dfg_id = 41 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %50 = "neura.data_mov"(%49) {dfg_id = 45 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %51 = "neura.icmp"(%50) <{cmpType = "eq"}> {dfg_id = 48 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %52 = "neura.data_mov"(%51) {dfg_id = 55 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %53 = "neura.not"(%52) {dfg_id = 62 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %54 = "neura.data_mov"(%49) {dfg_id = 44 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 4 : i32}, {id = 169 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 169 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %55 = "neura.data_mov"(%53) {dfg_id = 73 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %56 = neura.grant_predicate %54, %55 {dfg_id = 81 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %56 -> %30 {dfg_id = 90 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %57 = "neura.data_mov"(%47) {dfg_id = 106 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%53) {dfg_id = 72 : i32, mapping_locs = [{id = 208 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 6 : i32}, {id = 208 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 7 : i32}, {id = 208 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 208 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}, {id = 208 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %59 = neura.grant_predicate %57, %58 {dfg_id = 112 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %59 -> %27 {dfg_id = 117 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 11 : i32}, {id = 330 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 330 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 330 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 330 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 330 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 330 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %60 = "neura.data_mov"(%26) {dfg_id = 57 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 4 : i32}, {id = 4001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 4001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %61 = "neura.data_mov"(%53) {dfg_id = 71 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 4009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 4009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 4009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %62 = neura.grant_predicate %60, %61 {dfg_id = 80 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %62 -> %24 {dfg_id = 89 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 4001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %63 = "neura.data_mov"(%23) {dfg_id = 36 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %64 = "neura.data_mov"(%53) {dfg_id = 70 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 8 : i32}, {id = 4016 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %65 = neura.grant_predicate %63, %64 {dfg_id = 79 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %65 -> %21 {dfg_id = 88 : i32, mapping_locs = [{id = 4008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 4008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 4008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 4008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 4008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 4008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%20) {dfg_id = 34 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 161 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.data_mov"(%53) {dfg_id = 69 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 168 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 168 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %68 = neura.grant_predicate %66, %67 {dfg_id = 78 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %68 -> %18 {dfg_id = 87 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %69 = "neura.data_mov"(%17) {dfg_id = 40 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 320 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%53) {dfg_id = 68 : i32, mapping_locs = [{id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 328 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 328 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 328 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %71 = neura.grant_predicate %69, %70 {dfg_id = 77 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %71 -> %15 {dfg_id = 86 : i32, mapping_locs = [{id = 329 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 329 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 329 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 329 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 329 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 329 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 329 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 329 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 329 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %72 = "neura.data_mov"(%23) {dfg_id = 35 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %73 = "neura.data_mov"(%51) {dfg_id = 54 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %74 = neura.grant_predicate %72, %73 {dfg_id = 61 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %75 = "neura.data_mov"(%47) {dfg_id = 105 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %76 = "neura.data_mov"(%51) {dfg_id = 53 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 200 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 200 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 200 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %77 = neura.grant_predicate %75, %76 {dfg_id = 111 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %78 = "neura.data_mov"(%20) {dfg_id = 33 : i32, mapping_locs = [{id = 161 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 161 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %79 = "neura.data_mov"(%51) {dfg_id = 52 : i32, mapping_locs = [{id = 170 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 5 : i32}, {id = 170 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 6 : i32}, {id = 170 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 7 : i32}, {id = 170 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 8 : i32}, {id = 170 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = neura.grant_predicate %78, %79 {dfg_id = 60 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%17) {dfg_id = 39 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.data_mov"(%51) {dfg_id = 51 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 288 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = neura.grant_predicate %81, %82 {dfg_id = 59 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %84 = "neura.data_mov"(%74) {dfg_id = 67 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %85 = "neura.gep"(%84) <{operandSegmentSizes = array}> {dfg_id = 76 : i32, lhs_value = "%arg2", mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%77) {dfg_id = 116 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %87 = "neura.data_mov"(%85) {dfg_id = 85 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 118 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 11 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %88 = "neura.data_mov"(%74) {dfg_id = 66 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %89 = "neura.add"(%88) {dfg_id = 75 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 84 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %91 = "neura.icmp"(%90) <{cmpType = "eq"}> {dfg_id = 92 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %92 = "neura.data_mov"(%91) {dfg_id = 96 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %93 = "neura.not"(%92) {dfg_id = 99 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 83 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %95 = "neura.data_mov"(%93) {dfg_id = 104 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %96 = neura.grant_predicate %94, %95 {dfg_id = 110 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %96 -> %8 {dfg_id = 115 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %97 = "neura.data_mov"(%80) {dfg_id = 65 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 162 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %98 = "neura.data_mov"(%93) {dfg_id = 103 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %99 = neura.grant_predicate %97, %98 {dfg_id = 109 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %99 -> %5 {dfg_id = 114 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 12 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %100 = "neura.data_mov"(%83) {dfg_id = 64 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %101 = "neura.data_mov"(%93) {dfg_id = 102 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %102 = neura.grant_predicate %100, %101 {dfg_id = 108 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %102 -> %2 {dfg_id = 113 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %103 = "neura.data_mov"(%91) {dfg_id = 94 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %104 = "neura.data_mov"(%91) {dfg_id = 95 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %105 = neura.grant_predicate %103, %104 {dfg_id = 98 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %106 = "neura.data_mov"(%105) {dfg_id = 101 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %106 : !neura.data {dfg_id = 107 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 2 : i32}]} +// MAPPING-NEXT: neura.yield {dfg_id = 11 : i32} +// MAPPING-NEXT: } +// MAPPING-NEXT: } // YAML: array_config: -// YAML-NEXT: columns: 4 -// YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 11 -// YAML-NEXT: cores: -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "0" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 115 -// YAML-NEXT: time_step: 11 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 16 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SHL" -// YAML-NEXT: id: 27 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 67 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 76 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg2" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 12 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 15 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 82 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 83 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 110 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 850001 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 118 - +// YAML-NEXT: columns: 4 +// YAML-NEXT: rows: 4 +// YAML-NEXT: compiled_ii: 11 +// YAML-NEXT: cores: +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "0" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 0 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 115 +// YAML-NEXT: time_step: 11 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 16 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "SHL" +// YAML-NEXT: id: 27 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#4" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 43 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 7 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 67 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 76 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg2" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 12 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 15 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 7 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 82 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 9 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 83 +// YAML-NEXT: time_step: 9 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 10 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 110 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 850000 +// YAML-NEXT: time_step: 10 +// YAML-NEXT: invalid_iterations: 0 // ASM: # Compiled II: 11 // ASM: PE(0,0): // ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED], [$0] (t=0, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [$0], [NORTH, RED] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: SHL, [$0], [#4] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg0], [$0] -> [NORTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [$0] -> [EAST, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [NORTH, RED] -> [NORTH, RED] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [EAST, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [WEST, RED] (t=10, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(2,0): -// ASM-NEXT: { -// ASM-NEXT: STORE, [NORTH, RED], [WEST, RED] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [WEST, RED] -> [NORTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM: PE(0,1): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$9] -> [$1] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$1] -> [EAST, RED], [$1] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [$8], [$0] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [SOUTH, RED], [$0] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [EAST, RED] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [EAST, RED], [$0] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$9] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [NORTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$16] -> [$8] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(1,1): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [$1] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$9] -> [SOUTH, RED] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [SOUTH, RED], [$0] -> [$8], [EAST, RED], [$0] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$16] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$9] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#4] -> [EAST, RED], [WEST, RED], [$10], [NORTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GEP, [$0], [$8] -> [SOUTH, RED] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$9], [EAST, RED] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$16], [$1] -> [$1] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: NOT, [WEST, RED] -> [SOUTH, RED], [$9], [NORTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$10] -> [$2] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(2,1): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [NORTH, RED] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [SOUTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: NOT, [WEST, RED] -> [WEST, RED], [$16], [NORTH, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: ADD, [SOUTH, RED], [$0] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(0,2): -// ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [SOUTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(1,2): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [EAST, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(2,2): -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [WEST, RED] -> [$8] (t=11, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$10] (t=12, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$10] -> [SOUTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=7, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$9] -> [$0], [WEST, RED] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$9] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED], [$0] (t=0, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=11, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$8] -> [$0], [NORTH, RED] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: SHL, [$0], [#4] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg0], [$0] -> [NORTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: GEP, [arg2], [$0] -> [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [NORTH, RED] -> [NORTH, RED] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: LOAD, [NORTH, RED] -> [EAST, RED] (t=7, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [WEST, RED] (t=10, inv_iters=0) +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) \ No newline at end of file diff --git a/test/e2e/relu/relu_kernel.mlir b/test/e2e/relu/relu_kernel.mlir index 1b7939f5..f0fb40d0 100644 --- a/test/e2e/relu/relu_kernel.mlir +++ b/test/e2e/relu/relu_kernel.mlir @@ -32,439 +32,242 @@ // // Check the mapped MLIR contains key operations with full statements. // RUN: FileCheck %s --input-file=%t-mapping.mlir -check-prefix=MAPPING + // MAPPING: func.func @_Z6kernelPiS_(%arg0: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.writeonly}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 5 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 2 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["mustprogress", "nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data -// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 6 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %4 = neura.phi_start %3, %2 {dfg_id = 8 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %5 = neura.reserve {dfg_id = 3 : i32} : !neura.data -// MAPPING-NEXT: %6 = "neura.data_mov"(%0) {dfg_id = 5 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = neura.phi_start %6, %5 {dfg_id = 7 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 11 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.gep"(%8) <{operandSegmentSizes = array}> {dfg_id = 16 : i32, lhs_value = "%arg0", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 20 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.load"(%10) {dfg_id = 22 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%11) {dfg_id = 27 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = "neura.icmp"(%12) <{cmpType = "sge"}> {dfg_id = 30 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 34 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.data_mov"(%11) {dfg_id = 26 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 13 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 29 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %17 = "neura.sel"(%14, %15, %16) {dfg_id = 38 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.data_mov"(%7) {dfg_id = 10 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %19 = "neura.gep"(%18) <{operandSegmentSizes = array}> {dfg_id = 15 : i32, lhs_value = "%arg1", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = "neura.data_mov"(%17) {dfg_id = 41 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = "neura.data_mov"(%19) {dfg_id = 19 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 15 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%20, %21) {dfg_id = 42 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %22 = "neura.data_mov"(%7) {dfg_id = 9 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = "neura.add"(%22) {dfg_id = 14 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 18 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 21 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 25 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 29 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 17 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 33 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 37 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 40 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 12 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 32 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 36 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %33 -> %2 {dfg_id = 39 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%25) {dfg_id = 23 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 28 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%36) {dfg_id = 31 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %37 : !neura.data {dfg_id = 35 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} -// MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} -// MAPPING-NEXT: } -// MAPPING-NEXT: } +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 0 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 3 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.grant_once"() <{constant_value = 0 : i32}> {dfg_id = 1 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 2 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %2 = neura.reserve {dfg_id = 2 : i32} : !neura.data +// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 6 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %4 = neura.phi_start %3, %2 {dfg_id = 8 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %5 = neura.reserve {dfg_id = 3 : i32} : !neura.data +// MAPPING-NEXT: %6 = "neura.data_mov"(%0) {dfg_id = 5 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = neura.phi_start %6, %5 {dfg_id = 7 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %8 = "neura.data_mov"(%7) {dfg_id = 11 : i32, mapping_locs = [{id = 32 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.gep"(%8) <{operandSegmentSizes = array}> {dfg_id = 16 : i32, lhs_value = "%arg0", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.data_mov"(%9) {dfg_id = 20 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.load"(%10) {dfg_id = 22 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%11) {dfg_id = 27 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = "neura.icmp"(%12) <{cmpType = "sge"}> {dfg_id = 30 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 3 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%13) {dfg_id = 34 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.data_mov"(%11) {dfg_id = 26 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = "neura.data_mov"(%4) {dfg_id = 13 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 29 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 15 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %17 = "neura.sel"(%14, %15, %16) {dfg_id = 38 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.data_mov"(%7) {dfg_id = 10 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 192 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}, {id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = "neura.gep"(%18) <{operandSegmentSizes = array}> {dfg_id = 15 : i32, lhs_value = "%arg1", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = "neura.data_mov"(%17) {dfg_id = 41 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = "neura.data_mov"(%19) {dfg_id = 19 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}, {id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 15 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%20, %21) {dfg_id = 42 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %22 = "neura.data_mov"(%7) {dfg_id = 9 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = "neura.add"(%22) {dfg_id = 14 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 18 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.icmp"(%24) <{cmpType = "eq"}> {dfg_id = 21 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 2 : i32, y = 2 : i32}], rhs_value = 32 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%25) {dfg_id = 25 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = "neura.not"(%26) {dfg_id = 29 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%23) {dfg_id = 17 : i32, mapping_locs = [{id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 2 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 33 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 37 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %30 -> %5 {dfg_id = 40 : i32, mapping_locs = [{id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%4) {dfg_id = 12 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 32 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 36 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %33 -> %2 {dfg_id = 39 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%25) {dfg_id = 23 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.data_mov"(%25) {dfg_id = 24 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 288 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = neura.grant_predicate %34, %35 {dfg_id = 28 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%36) {dfg_id = 31 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %37 : !neura.data {dfg_id = 35 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 6 : i32, x = 1 : i32, y = 2 : i32}]} +// MAPPING-NEXT: neura.yield {dfg_id = 4 : i32} +// MAPPING-NEXT: } +// MAPPING-NEXT: } + + // YAML: array_config: -// YAML-NEXT: columns: 4 -// YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 5 -// YAML-NEXT: cores: -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 26 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "SEL" -// YAML-NEXT: id: 38 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "STORE" -// YAML-NEXT: id: 42 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 260001 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 340001 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "3" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SGE" -// YAML-NEXT: id: 30 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "LOAD" -// YAML-NEXT: id: 22 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 130002 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 190001 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GEP" -// YAML-NEXT: id: 15 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 10 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 200001 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "8" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 36 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 1 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 8 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 28 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 130001 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 320001 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VOID" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 23 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" +// YAML-NEXT: columns: 4 +// YAML-NEXT: rows: 4 +// YAML-NEXT: compiled_ii: 5 +// YAML-NEXT: cores: +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "1" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 26 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "SEL" +// YAML-NEXT: id: 38 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "STORE" +// YAML-NEXT: id: 42 +// YAML-NEXT: time_step: 8 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 260000 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 340000 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "3" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ICMP_SGE" +// YAML-NEXT: id: 30 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "LOAD" +// YAML-NEXT: id: 22 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 130001 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 190000 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "6" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GEP" +// YAML-NEXT: id: 15 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 10 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 // ASM: # Compiled II: 5 // ASM: PE(1,0): // ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: SEL, [EAST, RED], [$0], [NORTH, RED] -> [$0] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [NORTH, RED] (t=8, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(2,0): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM: PE(3,0): -// ASM-NEXT: { -// ASM-NEXT: ICMP_SGE, [$0], [#0] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [NORTH, RED] -> [$0], [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(1,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(2,1): -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(0,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$8] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [EAST, RED], [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(1,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$0] -> [$0] (t=5, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: RETURN_VOID, [$0] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(2,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [EAST, RED], [$0] -> [EAST, RED], [SOUTH, RED], [$0] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0], [$8] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#32] -> [$0], [WEST, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0], [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(3,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [WEST, RED] (t=0, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg0], [WEST, RED] -> [SOUTH, RED] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: SEL, [EAST, RED], [$0], [NORTH, RED] -> [$0] (t=7, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: STORE, [$0], [NORTH, RED] (t=8, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) diff --git a/test/e2e/spmv/spmv_kernel.mlir b/test/e2e/spmv/spmv_kernel.mlir index ecff552f..db0e7549 100644 --- a/test/e2e/spmv/spmv_kernel.mlir +++ b/test/e2e/spmv/spmv_kernel.mlir @@ -23,1075 +23,508 @@ // RUN: FileCheck %s --input-file=tmp-generated-instructions.asm --check-prefix=ASM // MAPPING: func.func @kernel(%arg0: i32 {llvm.noundef}, %arg1: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg2: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg3: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg4: !llvm.ptr {llvm.nocapture, llvm.noundef, llvm.readonly}, %arg5: !llvm.ptr {llvm.nocapture, llvm.noundef}) -> !llvm.void attributes {CConv = #llvm.cconv, accelerator = "neura", dataflow_mode = "predicate", linkage = #llvm.linkage, mapping_info = {compiled_ii = 15 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 5 : i32, res_mii = 9 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}, memory_effects = #llvm.memory_effects, no_unwind, passthrough = ["nofree", "norecurse", "nosync", ["uwtable", "2"], ["min-legal-vector-width", "0"], ["no-trapping-math", "true"], ["stack-protector-buffer-size", "8"], ["target-cpu", "x86-64"]], target_cpu = "x86-64", target_features = #llvm.target_features<["+cmov", "+cx8", "+fxsr", "+mmx", "+sse", "+sse2", "+x87"]>, tune_cpu = "generic", unnamed_addr = 1 : i64, visibility_ = 0 : i64} { -// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data -// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 12 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %4 = "neura.icmp"(%3) <{cmpType = "sgt"}> {dfg_id = 14 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %5 = "neura.data_mov"(%4) {dfg_id = 16 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %6 = "neura.grant_once"(%5) {dfg_id = 18 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %7 = "neura.data_mov"(%4) {dfg_id = 15 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 3000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 3000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 3000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 3000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 3000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 3000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 3000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 3000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 3000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 3000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 3000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %8 = "neura.not"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 19 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %12 = "neura.data_mov"(%6) {dfg_id = 22 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 26 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %14 = "neura.data_mov"(%2) {dfg_id = 13 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %15 = "neura.data_mov"(%6) {dfg_id = 21 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %17 = "neura.data_mov"(%6) {dfg_id = 20 : i32, mapping_locs = [{id = 1016 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 3001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 3001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 3001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 3001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 3001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 3001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 3001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 3001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 3001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 3001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 3001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 3001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 3001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 3001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %18 = "neura.not"(%17) {dfg_id = 24 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %19 = "neura.data_mov"(%10) {dfg_id = 27 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %20 = "neura.data_mov"(%18) {dfg_id = 28 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %21 = neura.grant_predicate %19, %20 {dfg_id = 34 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %22 = "neura.data_mov"(%13) {dfg_id = 33 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %23 = neura.zext %22 {dfg_id = 36 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 42 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %25 = "neura.and"(%24) {dfg_id = 46 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %26 = "neura.data_mov"(%13) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "ult"}> {dfg_id = 35 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 4 : i32} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %28 = "neura.data_mov"(%16) {dfg_id = 31 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 45 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %31 = "neura.data_mov"(%16) {dfg_id = 30 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 1001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 1001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1009 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 1009 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}, {id = 1009 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 1009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 1009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 1009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 1009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 1009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 1009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 44 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 38 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %35 = "neura.not"(%34) {dfg_id = 43 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %36 = "neura.data_mov"(%23) {dfg_id = 41 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %37 = "neura.data_mov"(%35) {dfg_id = 48 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %38 = neura.grant_predicate %36, %37 {dfg_id = 54 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %39 = "neura.data_mov"(%16) {dfg_id = 29 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %40 = "neura.data_mov"(%35) {dfg_id = 47 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %41 = neura.grant_predicate %39, %40 {dfg_id = 53 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %42 = "neura.data_mov"(%38) {dfg_id = 59 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %43 = "neura.and"(%42) {dfg_id = 66 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 2147483644 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %44 = neura.reserve {dfg_id = 3 : i32} : !neura.data -// MAPPING-NEXT: %45 = "neura.data_mov"(%41) {dfg_id = 58 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %46 = neura.phi_start %45, %44 {dfg_id = 65 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %47 = neura.reserve {dfg_id = 4 : i32} : !neura.data -// MAPPING-NEXT: %48 = "neura.data_mov"(%43) {dfg_id = 79 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %49 = neura.phi_start %48, %47 {dfg_id = 92 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %50 = neura.reserve {dfg_id = 5 : i32} : !neura.data -// MAPPING-NEXT: %51 = "neura.data_mov"(%41) {dfg_id = 57 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %52 = neura.phi_start %51, %50 {dfg_id = 64 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %53 = neura.reserve {dfg_id = 6 : i32} : !neura.data -// MAPPING-NEXT: %54 = "neura.data_mov"(%41) {dfg_id = 56 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %55 = neura.phi_start %54, %53 {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %56 = "neura.data_mov"(%55) {dfg_id = 75 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 20 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %57 = "neura.gep"(%56) <{operandSegmentSizes = array}> {dfg_id = 90 : i32, lhs_value = "%arg1", mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %58 = "neura.data_mov"(%57) {dfg_id = 107 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 19 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %59 = "neura.load"(%58) {dfg_id = 124 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %60 = "neura.data_mov"(%55) {dfg_id = 74 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %61 = "neura.gep"(%60) <{operandSegmentSizes = array}> {dfg_id = 89 : i32, lhs_value = "%arg2", mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %62 = "neura.data_mov"(%61) {dfg_id = 106 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %63 = "neura.load"(%62) {dfg_id = 123 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %64 = "neura.data_mov"(%63) {dfg_id = 137 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %65 = neura.sext %64 {dfg_id = 154 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %66 = "neura.data_mov"(%65) {dfg_id = 168 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %67 = "neura.gep"(%66) <{operandSegmentSizes = array}> {dfg_id = 182 : i32, lhs_value = "%arg4", mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %68 = "neura.data_mov"(%67) {dfg_id = 197 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %69 = "neura.load"(%68) {dfg_id = 211 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 224 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 42 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %71 = "neura.data_mov"(%59) {dfg_id = 138 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 31 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %72 = "neura.mul"(%70, %71) {dfg_id = 233 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %73 = "neura.data_mov"(%55) {dfg_id = 73 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 289 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 289 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 289 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %74 = "neura.gep"(%73) <{operandSegmentSizes = array}> {dfg_id = 88 : i32, lhs_value = "%arg3", mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %75 = "neura.data_mov"(%74) {dfg_id = 105 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %76 = "neura.load"(%75) {dfg_id = 122 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %77 = "neura.data_mov"(%76) {dfg_id = 136 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %78 = neura.sext %77 {dfg_id = 153 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %79 = "neura.data_mov"(%78) {dfg_id = 167 : i32, mapping_locs = [{id = 416 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %80 = "neura.gep"(%79) <{operandSegmentSizes = array}> {dfg_id = 181 : i32, lhs_value = "%arg5", mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %81 = "neura.data_mov"(%80) {dfg_id = 196 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 12001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 12001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %82 = "neura.load"(%81) {dfg_id = 210 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %83 = "neura.data_mov"(%82) {dfg_id = 223 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %84 = "neura.data_mov"(%72) {dfg_id = 242 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %85 = "neura.add"(%83, %84) {dfg_id = 251 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %86 = "neura.data_mov"(%85) {dfg_id = 260 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 12000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %87 = "neura.data_mov"(%80) {dfg_id = 195 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 12008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 12008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 12008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 12008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 12008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 270 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %88 = "neura.data_mov"(%55) {dfg_id = 72 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 1008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %89 = "neura.or"(%88) {dfg_id = 87 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 104 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 2008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %91 = "neura.gep"(%90) <{operandSegmentSizes = array}> {dfg_id = 121 : i32, lhs_value = "%arg1", mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %92 = "neura.data_mov"(%91) {dfg_id = 135 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 3001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %93 = "neura.load"(%92) {dfg_id = 152 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 103 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %95 = "neura.gep"(%94) <{operandSegmentSizes = array}> {dfg_id = 120 : i32, lhs_value = "%arg2", mapping_locs = [{id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %96 = "neura.data_mov"(%95) {dfg_id = 134 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %97 = "neura.load"(%96) {dfg_id = 151 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %98 = "neura.data_mov"(%97) {dfg_id = 165 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %99 = neura.sext %98 {dfg_id = 180 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 194 : i32, mapping_locs = [{id = 23 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 209 : i32, lhs_value = "%arg4", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 222 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 3009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 3009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %103 = "neura.load"(%102) {dfg_id = 232 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %104 = "neura.data_mov"(%103) {dfg_id = 241 : i32, mapping_locs = [{id = 3002 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %105 = "neura.data_mov"(%93) {dfg_id = 166 : i32, mapping_locs = [{id = 3016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 3016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 3016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %106 = "neura.mul"(%104, %105) {dfg_id = 250 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %107 = "neura.data_mov"(%89) {dfg_id = 102 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %108 = "neura.gep"(%107) <{operandSegmentSizes = array}> {dfg_id = 119 : i32, lhs_value = "%arg3", mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %109 = "neura.data_mov"(%108) {dfg_id = 133 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %110 = "neura.load"(%109) {dfg_id = 150 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %111 = "neura.data_mov"(%110) {dfg_id = 164 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %112 = neura.sext %111 {dfg_id = 179 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 193 : i32, mapping_locs = [{id = 23 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %114 = "neura.gep"(%113) <{operandSegmentSizes = array}> {dfg_id = 208 : i32, lhs_value = "%arg5", mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 221 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %116 = "neura.load"(%115) {dfg_id = 231 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %117 = "neura.data_mov"(%116) {dfg_id = 240 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %118 = "neura.data_mov"(%106) {dfg_id = 259 : i32, mapping_locs = [{id = 3002 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %119 = "neura.add"(%117, %118) {dfg_id = 269 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %120 = "neura.data_mov"(%119) {dfg_id = 277 : i32, mapping_locs = [{id = 3002 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %121 = "neura.data_mov"(%114) {dfg_id = 220 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 232 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 22 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 3008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 3008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 3008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 3008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%120, %121) {dfg_id = 286 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %122 = "neura.data_mov"(%55) {dfg_id = 71 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 289 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 289 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 289 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %123 = "neura.or"(%122) {dfg_id = 86 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 2 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %124 = "neura.data_mov"(%123) {dfg_id = 101 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %125 = "neura.gep"(%124) <{operandSegmentSizes = array}> {dfg_id = 118 : i32, lhs_value = "%arg1", mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 132 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 15 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %127 = "neura.load"(%126) {dfg_id = 149 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %128 = "neura.data_mov"(%123) {dfg_id = 100 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %129 = "neura.gep"(%128) <{operandSegmentSizes = array}> {dfg_id = 117 : i32, lhs_value = "%arg2", mapping_locs = [{id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %130 = "neura.data_mov"(%129) {dfg_id = 131 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 148 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %132 = "neura.data_mov"(%131) {dfg_id = 162 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %133 = neura.sext %132 {dfg_id = 178 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %134 = "neura.data_mov"(%133) {dfg_id = 192 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %135 = "neura.gep"(%134) <{operandSegmentSizes = array}> {dfg_id = 207 : i32, lhs_value = "%arg4", mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %136 = "neura.data_mov"(%135) {dfg_id = 219 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %137 = "neura.load"(%136) {dfg_id = 230 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %138 = "neura.data_mov"(%137) {dfg_id = 239 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %139 = "neura.data_mov"(%127) {dfg_id = 163 : i32, mapping_locs = [{id = 1016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 1016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %140 = "neura.mul"(%138, %139) {dfg_id = 249 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %141 = "neura.data_mov"(%123) {dfg_id = 99 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %142 = "neura.gep"(%141) <{operandSegmentSizes = array}> {dfg_id = 116 : i32, lhs_value = "%arg3", mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %143 = "neura.data_mov"(%142) {dfg_id = 130 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 147 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %145 = "neura.data_mov"(%144) {dfg_id = 161 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %146 = neura.sext %145 {dfg_id = 177 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %147 = "neura.data_mov"(%146) {dfg_id = 191 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 206 : i32, lhs_value = "%arg5", mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 218 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 229 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %151 = "neura.data_mov"(%150) {dfg_id = 238 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %152 = "neura.data_mov"(%140) {dfg_id = 258 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %153 = "neura.add"(%151, %152) {dfg_id = 268 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %154 = "neura.data_mov"(%153) {dfg_id = 276 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %155 = "neura.data_mov"(%148) {dfg_id = 217 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 8016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 8016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 8016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 8016 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%154, %155) {dfg_id = 285 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %156 = "neura.data_mov"(%55) {dfg_id = 70 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 169 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %157 = "neura.or"(%156) {dfg_id = 85 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %158 = "neura.data_mov"(%157) {dfg_id = 98 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 30 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %159 = "neura.gep"(%158) <{operandSegmentSizes = array}> {dfg_id = 115 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %160 = "neura.data_mov"(%159) {dfg_id = 129 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 12008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 12008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %161 = "neura.load"(%160) {dfg_id = 146 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %162 = "neura.data_mov"(%157) {dfg_id = 97 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %163 = "neura.gep"(%162) <{operandSegmentSizes = array}> {dfg_id = 114 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %164 = "neura.data_mov"(%163) {dfg_id = 128 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %165 = "neura.load"(%164) {dfg_id = 145 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %166 = "neura.data_mov"(%165) {dfg_id = 159 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %167 = neura.sext %166 {dfg_id = 176 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %168 = "neura.data_mov"(%167) {dfg_id = 190 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %169 = "neura.gep"(%168) <{operandSegmentSizes = array}> {dfg_id = 205 : i32, lhs_value = "%arg4", mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %170 = "neura.data_mov"(%169) {dfg_id = 216 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 3008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 3008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %171 = "neura.load"(%170) {dfg_id = 228 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 237 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 7 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 160 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 41 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 45 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 33 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %174 = "neura.mul"(%172, %173) {dfg_id = 248 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %175 = "neura.data_mov"(%157) {dfg_id = 96 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 192 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %176 = "neura.gep"(%175) <{operandSegmentSizes = array}> {dfg_id = 113 : i32, lhs_value = "%arg3", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %177 = "neura.data_mov"(%176) {dfg_id = 127 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %178 = "neura.load"(%177) {dfg_id = 144 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %179 = "neura.data_mov"(%178) {dfg_id = 158 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %180 = neura.sext %179 {dfg_id = 175 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 189 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %182 = "neura.gep"(%181) <{operandSegmentSizes = array}> {dfg_id = 204 : i32, lhs_value = "%arg5", mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %183 = "neura.data_mov"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %184 = "neura.load"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %185 = "neura.data_mov"(%184) {dfg_id = 236 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 2008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %186 = "neura.data_mov"(%174) {dfg_id = 257 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %187 = "neura.add"(%185, %186) {dfg_id = 267 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %188 = "neura.data_mov"(%187) {dfg_id = 275 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %189 = "neura.data_mov"(%182) {dfg_id = 214 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 2009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 2009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 2009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 2009 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%188, %189) {dfg_id = 284 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %190 = "neura.data_mov"(%55) {dfg_id = 69 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %191 = "neura.add"(%190) {dfg_id = 84 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %192 = "neura.data_mov"(%52) {dfg_id = 76 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %193 = "neura.add"(%192) {dfg_id = 91 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %194 = "neura.data_mov"(%193) {dfg_id = 109 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %195 = "neura.data_mov"(%49) {dfg_id = 111 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %196 = "neura.icmp"(%194, %195) <{cmpType = "eq"}> {dfg_id = 125 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %197 = "neura.data_mov"(%196) {dfg_id = 141 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %198 = "neura.not"(%197) {dfg_id = 157 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %199 = "neura.data_mov"(%191) {dfg_id = 95 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 20 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 321 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 321 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 321 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 321 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 321 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %200 = "neura.data_mov"(%198) {dfg_id = 174 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 20 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 328 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 188 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %201 -> %53 {dfg_id = 203 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 29 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %202 = "neura.data_mov"(%193) {dfg_id = 108 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %203 = "neura.data_mov"(%198) {dfg_id = 173 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %204 = neura.grant_predicate %202, %203 {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %204 -> %50 {dfg_id = 202 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %205 = "neura.data_mov"(%49) {dfg_id = 110 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %206 = "neura.data_mov"(%198) {dfg_id = 172 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %207 = neura.grant_predicate %205, %206 {dfg_id = 186 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %207 -> %47 {dfg_id = 201 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %208 = "neura.data_mov"(%46) {dfg_id = 78 : i32, mapping_locs = [{id = 291 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 291 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 291 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 291 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 291 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 291 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 291 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 291 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 291 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %209 = "neura.data_mov"(%198) {dfg_id = 171 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 185 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %210 -> %44 {dfg_id = 200 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 297 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 297 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 297 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 297 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 297 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %211 = "neura.data_mov"(%191) {dfg_id = 94 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %212 = "neura.data_mov"(%196) {dfg_id = 140 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 156 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %214 = "neura.data_mov"(%46) {dfg_id = 77 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %215 = "neura.data_mov"(%196) {dfg_id = 139 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 155 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %217 = "neura.data_mov"(%33) {dfg_id = 49 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %218 = "neura.data_mov"(%216) {dfg_id = 169 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %219 = "neura.phi"(%217, %218) {dfg_id = 183 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %220 = "neura.data_mov"(%30) {dfg_id = 50 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %221 = "neura.data_mov"(%213) {dfg_id = 170 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %222 = "neura.phi"(%220, %221) {dfg_id = 184 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %223 = "neura.data_mov"(%25) {dfg_id = 52 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %224 = "neura.icmp"(%223) <{cmpType = "eq"}> {dfg_id = 55 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %225 = "neura.data_mov"(%224) {dfg_id = 61 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 4002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 4002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %226 = "neura.data_mov"(%224) {dfg_id = 62 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 4002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 4002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 68 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %228 = "neura.data_mov"(%224) {dfg_id = 60 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %229 = "neura.not"(%228) {dfg_id = 67 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %230 = "neura.data_mov"(%222) {dfg_id = 199 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %231 = "neura.data_mov"(%229) {dfg_id = 82 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 0 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 213 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %233 = "neura.data_mov"(%219) {dfg_id = 198 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %234 = "neura.data_mov"(%229) {dfg_id = 81 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 176 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 176 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 212 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %236 = "neura.data_mov"(%25) {dfg_id = 51 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 1002 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 1002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 1002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 1002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 1002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 1002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 1002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 1002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %237 = "neura.data_mov"(%229) {dfg_id = 80 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1010 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 1010 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 1010 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 1010 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 1010 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 1010 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %238 = neura.grant_predicate %236, %237 {dfg_id = 93 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %239 = neura.reserve {dfg_id = 7 : i32} : !neura.data -// MAPPING-NEXT: %240 = "neura.data_mov"(%238) {dfg_id = 112 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %241 = neura.phi_start %240, %239 {dfg_id = 126 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %242 = neura.reserve {dfg_id = 8 : i32} : !neura.data -// MAPPING-NEXT: %243 = "neura.data_mov"(%235) {dfg_id = 225 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %244 = neura.phi_start %243, %242 {dfg_id = 234 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %245 = neura.reserve {dfg_id = 9 : i32} : !neura.data -// MAPPING-NEXT: %246 = "neura.data_mov"(%232) {dfg_id = 226 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %247 = neura.phi_start %246, %245 {dfg_id = 235 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %248 = "neura.data_mov"(%247) {dfg_id = 247 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %249 = "neura.gep"(%248) <{operandSegmentSizes = array}> {dfg_id = 256 : i32, lhs_value = "%arg1", mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %250 = "neura.data_mov"(%249) {dfg_id = 266 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %251 = "neura.load"(%250) {dfg_id = 274 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %252 = "neura.data_mov"(%247) {dfg_id = 246 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %253 = "neura.gep"(%252) <{operandSegmentSizes = array}> {dfg_id = 255 : i32, lhs_value = "%arg2", mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %254 = "neura.data_mov"(%253) {dfg_id = 265 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %255 = "neura.load"(%254) {dfg_id = 273 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %256 = "neura.data_mov"(%255) {dfg_id = 282 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %257 = neura.sext %256 {dfg_id = 290 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %258 = "neura.data_mov"(%257) {dfg_id = 296 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %259 = "neura.gep"(%258) <{operandSegmentSizes = array}> {dfg_id = 302 : i32, lhs_value = "%arg4", mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %260 = "neura.data_mov"(%259) {dfg_id = 309 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 12000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 12000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %261 = "neura.load"(%260) {dfg_id = 312 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %262 = "neura.data_mov"(%261) {dfg_id = 314 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %263 = "neura.data_mov"(%251) {dfg_id = 283 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %264 = "neura.mul"(%262, %263) {dfg_id = 315 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %265 = "neura.data_mov"(%247) {dfg_id = 245 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %266 = "neura.gep"(%265) <{operandSegmentSizes = array}> {dfg_id = 254 : i32, lhs_value = "%arg3", mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %267 = "neura.data_mov"(%266) {dfg_id = 264 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %268 = "neura.load"(%267) {dfg_id = 272 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %269 = "neura.data_mov"(%268) {dfg_id = 281 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %270 = neura.sext %269 {dfg_id = 289 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data -// MAPPING-NEXT: %271 = "neura.data_mov"(%270) {dfg_id = 295 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %272 = "neura.gep"(%271) <{operandSegmentSizes = array}> {dfg_id = 301 : i32, lhs_value = "%arg5", mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %273 = "neura.data_mov"(%272) {dfg_id = 308 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 12000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %274 = "neura.load"(%273) {dfg_id = 311 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %275 = "neura.data_mov"(%274) {dfg_id = 313 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %276 = "neura.data_mov"(%264) {dfg_id = 316 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %277 = "neura.add"(%275, %276) {dfg_id = 317 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %278 = "neura.data_mov"(%277) {dfg_id = 318 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %279 = "neura.data_mov"(%272) {dfg_id = 307 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 8009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 8009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 8009 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 8009 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: "neura.store"(%278, %279) {dfg_id = 319 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 27 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () -// MAPPING-NEXT: %280 = "neura.data_mov"(%247) {dfg_id = 244 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %281 = "neura.add"(%280) {dfg_id = 253 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %282 = "neura.data_mov"(%244) {dfg_id = 243 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %283 = "neura.add"(%282) {dfg_id = 252 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %284 = "neura.data_mov"(%283) {dfg_id = 262 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 162 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 162 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %285 = "neura.data_mov"(%241) {dfg_id = 143 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %286 = "neura.icmp"(%284, %285) <{cmpType = "eq"}> {dfg_id = 271 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %287 = "neura.data_mov"(%286) {dfg_id = 280 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %288 = "neura.not"(%287) {dfg_id = 288 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %289 = "neura.data_mov"(%281) {dfg_id = 263 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 1003 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 1003 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 1003 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 1003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 1003 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 1003 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 1003 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 1003 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %290 = "neura.data_mov"(%288) {dfg_id = 294 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 29 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 15 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %291 = neura.grant_predicate %289, %290 {dfg_id = 300 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %291 -> %245 {dfg_id = 306 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}, {id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %292 = "neura.data_mov"(%283) {dfg_id = 261 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 290 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 290 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 290 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 290 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %293 = "neura.data_mov"(%288) {dfg_id = 293 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %294 = neura.grant_predicate %292, %293 {dfg_id = 299 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %294 -> %242 {dfg_id = 305 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 170 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 170 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}, {id = 170 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 28 : i32}, {id = 170 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 29 : i32}, {id = 170 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 30 : i32}, {id = 170 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %295 = "neura.data_mov"(%241) {dfg_id = 142 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 289 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 289 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 289 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %296 = "neura.data_mov"(%288) {dfg_id = 292 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %297 = neura.grant_predicate %295, %296 {dfg_id = 298 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: neura.ctrl_mov %297 -> %239 {dfg_id = 304 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 15 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 1011 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 1011 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}, {id = 1011 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 28 : i32}, {id = 1011 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 29 : i32}, {id = 1011 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 30 : i32}, {id = 1011 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 31 : i32}, {id = 1011 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 32 : i32}, {id = 1011 : i32, index_per_ii = 3 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 33 : i32}]} : !neura.data !neura.data -// MAPPING-NEXT: %298 = "neura.data_mov"(%286) {dfg_id = 278 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %299 = "neura.data_mov"(%286) {dfg_id = 279 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %300 = neura.grant_predicate %298, %299 {dfg_id = 287 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data -// MAPPING-NEXT: %301 = "neura.data_mov"(%21) {dfg_id = 37 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %302 = "neura.data_mov"(%227) {dfg_id = 83 : i32, mapping_locs = [{id = 4009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 4009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %303 = "neura.data_mov"(%300) {dfg_id = 291 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: %304 = "neura.phi"(%301, %302, %303) {dfg_id = 297 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data -// MAPPING-NEXT: %305 = "neura.data_mov"(%304) {dfg_id = 303 : i32, mapping_locs = [{id = 4009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 4009 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data -// MAPPING-NEXT: neura.return_void %305 : !neura.data {dfg_id = 310 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 1 : i32}]} -// MAPPING-NEXT: neura.yield {dfg_id = 10 : i32} -// MAPPING-NEXT: } -// MAPPING-NEXT: } -// YAML: array_config: -// YAML-NEXT: columns: 4 -// YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 15 -// YAML-NEXT: cores: -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "0" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 235 -// YAML-NEXT: time_step: 15 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 253 -// YAML-NEXT: time_step: 16 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "arg0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 26 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_ULT" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#4" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 5 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ZEXT" -// YAML-NEXT: id: 36 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 6 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 54 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 7 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "AND" -// YAML-NEXT: id: 66 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#2147483644" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2830001 -// YAML-NEXT: time_step: 22 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 8 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 92 -// YAML-NEXT: time_step: 8 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$9" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 2580001 -// YAML-NEXT: time_step: 23 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 9 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "AND" -// YAML-NEXT: id: 46 -// YAML-NEXT: time_step: 9 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#3" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 10 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_EQ" -// YAML-NEXT: id: 55 -// YAML-NEXT: time_step: 10 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" +// MAPPING-NEXT: %0 = "neura.grant_once"() <{constant_value = "%arg0"}> {dfg_id = 0 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 0 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %1 = "neura.constant"() <{value = "%arg0"}> {dfg_id = 1 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 0 : i32, x = 1 : i32, y = 0 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %2 = "neura.grant_once"() <{constant_value = 0 : i64}> {dfg_id = 2 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 1 : i32, y = 1 : i32}]} : () -> !neura.data +// MAPPING-NEXT: %3 = "neura.data_mov"(%1) {dfg_id = 12 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 0 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %4 = "neura.icmp"(%3) <{cmpType = "sgt"}> {dfg_id = 14 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 1 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 0 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %5 = "neura.data_mov"(%4) {dfg_id = 16 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %6 = "neura.grant_once"(%5) {dfg_id = 18 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 2 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %7 = "neura.data_mov"(%4) {dfg_id = 15 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 1 : i32}, {id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 3000 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 3000 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}, {id = 3000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}, {id = 3000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 3000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 3000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 3000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 3000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 3000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 3000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 3000 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 3000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 3000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 3000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %8 = "neura.not"(%7) {dfg_id = 17 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %9 = "neura.data_mov"(%8) {dfg_id = 19 : i32, mapping_locs = [{id = 3000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %10 = "neura.grant_once"(%9) {dfg_id = 23 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %11 = "neura.data_mov"(%0) {dfg_id = 11 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %12 = "neura.data_mov"(%6) {dfg_id = 22 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %13 = neura.grant_predicate %11, %12 {dfg_id = 26 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 3 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %14 = "neura.data_mov"(%2) {dfg_id = 13 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %15 = "neura.data_mov"(%6) {dfg_id = 21 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 2 : i32}, {id = 168 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 3 : i32}, {id = 168 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %16 = neura.grant_predicate %14, %15 {dfg_id = 25 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %17 = "neura.data_mov"(%6) {dfg_id = 20 : i32, mapping_locs = [{id = 1016 : i32, index_per_ii = 2 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 2 : i32}, {id = 3 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 3 : i32}, {id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 3001 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 5 : i32}, {id = 3001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 3001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 3001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 3001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 3001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 3001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 3001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 3001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 3001 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 3001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 3001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 3001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 3001 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %18 = "neura.not"(%17) {dfg_id = 24 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %19 = "neura.data_mov"(%10) {dfg_id = 27 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 224 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %20 = "neura.data_mov"(%18) {dfg_id = 28 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %21 = neura.grant_predicate %19, %20 {dfg_id = 34 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %22 = "neura.data_mov"(%13) {dfg_id = 33 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}, {id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %23 = neura.zext %22 {dfg_id = 36 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %24 = "neura.data_mov"(%23) {dfg_id = 42 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %25 = "neura.and"(%24) {dfg_id = 46 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %26 = "neura.data_mov"(%13) {dfg_id = 32 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 3 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %27 = "neura.icmp"(%26) <{cmpType = "ult"}> {dfg_id = 35 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 4 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 4 : i32} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %28 = "neura.data_mov"(%16) {dfg_id = 31 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 4000 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}, {id = 4000 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}, {id = 4000 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 4000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %29 = "neura.data_mov"(%27) {dfg_id = 40 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 4008 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 5 : i32}, {id = 4008 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 6 : i32}, {id = 4008 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 7 : i32}, {id = 4008 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 8 : i32}, {id = 4008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %30 = neura.grant_predicate %28, %29 {dfg_id = 45 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %31 = "neura.data_mov"(%16) {dfg_id = 30 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}, {id = 1001 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 6 : i32}, {id = 1001 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 7 : i32}, {id = 1001 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 8 : i32}, {id = 1001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 1001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 1001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 1001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 1001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %32 = "neura.data_mov"(%27) {dfg_id = 39 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}, {id = 1009 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 5 : i32}, {id = 1009 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 6 : i32}, {id = 1009 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 7 : i32}, {id = 1009 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 1009 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 1009 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 1009 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 1009 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}, {id = 1009 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %33 = neura.grant_predicate %31, %32 {dfg_id = 44 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %34 = "neura.data_mov"(%27) {dfg_id = 38 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 4 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %35 = "neura.not"(%34) {dfg_id = 43 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 5 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %36 = "neura.data_mov"(%23) {dfg_id = 41 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %37 = "neura.data_mov"(%35) {dfg_id = 48 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %38 = neura.grant_predicate %36, %37 {dfg_id = 54 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %39 = "neura.data_mov"(%16) {dfg_id = 29 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %40 = "neura.data_mov"(%35) {dfg_id = 47 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 5 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 5 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %41 = neura.grant_predicate %39, %40 {dfg_id = 53 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 6 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %42 = "neura.data_mov"(%38) {dfg_id = 59 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %43 = "neura.and"(%42) {dfg_id = 66 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 2147483644 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %44 = neura.reserve {dfg_id = 3 : i32} : !neura.data +// MAPPING-NEXT: %45 = "neura.data_mov"(%41) {dfg_id = 58 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 16 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}, {id = 288 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 288 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 288 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 288 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %46 = neura.phi_start %45, %44 {dfg_id = 65 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %47 = neura.reserve {dfg_id = 4 : i32} : !neura.data +// MAPPING-NEXT: %48 = "neura.data_mov"(%43) {dfg_id = 79 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %49 = neura.phi_start %48, %47 {dfg_id = 92 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %50 = neura.reserve {dfg_id = 5 : i32} : !neura.data +// MAPPING-NEXT: %51 = "neura.data_mov"(%41) {dfg_id = 57 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %52 = neura.phi_start %51, %50 {dfg_id = 64 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 7 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %53 = neura.reserve {dfg_id = 6 : i32} : !neura.data +// MAPPING-NEXT: %54 = "neura.data_mov"(%41) {dfg_id = 56 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 6 : i32}, {id = 160 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %55 = neura.phi_start %54, %53 {dfg_id = 63 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %56 = "neura.data_mov"(%55) {dfg_id = 75 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 20 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 320 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 320 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 320 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 320 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 320 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 320 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 320 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %57 = "neura.gep"(%56) <{operandSegmentSizes = array}> {dfg_id = 90 : i32, lhs_value = "%arg1", mapping_locs = [{id = 10 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %58 = "neura.data_mov"(%57) {dfg_id = 107 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 19 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 2000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %59 = "neura.load"(%58) {dfg_id = 124 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %60 = "neura.data_mov"(%55) {dfg_id = 74 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4001 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 4001 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 4001 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 4001 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 4001 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %61 = "neura.gep"(%60) <{operandSegmentSizes = array}> {dfg_id = 89 : i32, lhs_value = "%arg2", mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %62 = "neura.data_mov"(%61) {dfg_id = 106 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %63 = "neura.load"(%62) {dfg_id = 123 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %64 = "neura.data_mov"(%63) {dfg_id = 137 : i32, mapping_locs = [{id = 4001 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 4001 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 4001 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %65 = neura.sext %64 {dfg_id = 154 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %66 = "neura.data_mov"(%65) {dfg_id = 168 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 8000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %67 = "neura.gep"(%66) <{operandSegmentSizes = array}> {dfg_id = 182 : i32, lhs_value = "%arg4", mapping_locs = [{id = 8 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %68 = "neura.data_mov"(%67) {dfg_id = 197 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %69 = "neura.load"(%68) {dfg_id = 211 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %70 = "neura.data_mov"(%69) {dfg_id = 224 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 42 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %71 = "neura.data_mov"(%59) {dfg_id = 138 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 20 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 31 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %72 = "neura.mul"(%70, %71) {dfg_id = 233 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %73 = "neura.data_mov"(%55) {dfg_id = 73 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 289 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 289 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 289 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 289 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 289 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %74 = "neura.gep"(%73) <{operandSegmentSizes = array}> {dfg_id = 88 : i32, lhs_value = "%arg3", mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %75 = "neura.data_mov"(%74) {dfg_id = 105 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 26 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %76 = "neura.load"(%75) {dfg_id = 122 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %77 = "neura.data_mov"(%76) {dfg_id = 136 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %78 = neura.sext %77 {dfg_id = 153 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 3 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %79 = "neura.data_mov"(%78) {dfg_id = 167 : i32, mapping_locs = [{id = 416 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %80 = "neura.gep"(%79) <{operandSegmentSizes = array}> {dfg_id = 181 : i32, lhs_value = "%arg5", mapping_locs = [{id = 13 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %81 = "neura.data_mov"(%80) {dfg_id = 196 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12001 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 12001 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 12001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %82 = "neura.load"(%81) {dfg_id = 210 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %83 = "neura.data_mov"(%82) {dfg_id = 223 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %84 = "neura.data_mov"(%72) {dfg_id = 242 : i32, mapping_locs = [{id = 30 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %85 = "neura.add"(%83, %84) {dfg_id = 251 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %86 = "neura.data_mov"(%85) {dfg_id = 260 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 12000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %87 = "neura.data_mov"(%80) {dfg_id = 195 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 12008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}, {id = 12008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 12008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 12008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 12008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}, {id = 12008 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%86, %87) {dfg_id = 270 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %88 = "neura.data_mov"(%55) {dfg_id = 72 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1008 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 1008 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 1008 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}, {id = 1008 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %89 = "neura.or"(%88) {dfg_id = 87 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 0 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %90 = "neura.data_mov"(%89) {dfg_id = 104 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2008 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 2008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 2008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 2008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %91 = "neura.gep"(%90) <{operandSegmentSizes = array}> {dfg_id = 121 : i32, lhs_value = "%arg1", mapping_locs = [{id = 2 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %92 = "neura.data_mov"(%91) {dfg_id = 135 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 3001 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %93 = "neura.load"(%92) {dfg_id = 152 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %94 = "neura.data_mov"(%89) {dfg_id = 103 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %95 = "neura.gep"(%94) <{operandSegmentSizes = array}> {dfg_id = 120 : i32, lhs_value = "%arg2", mapping_locs = [{id = 2 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %96 = "neura.data_mov"(%95) {dfg_id = 134 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %97 = "neura.load"(%96) {dfg_id = 151 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %98 = "neura.data_mov"(%97) {dfg_id = 165 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %99 = neura.sext %98 {dfg_id = 180 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %100 = "neura.data_mov"(%99) {dfg_id = 194 : i32, mapping_locs = [{id = 23 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %101 = "neura.gep"(%100) <{operandSegmentSizes = array}> {dfg_id = 209 : i32, lhs_value = "%arg4", mapping_locs = [{id = 11 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %102 = "neura.data_mov"(%101) {dfg_id = 222 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 224 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}, {id = 22 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 3009 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 3009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %103 = "neura.load"(%102) {dfg_id = 232 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %104 = "neura.data_mov"(%103) {dfg_id = 241 : i32, mapping_locs = [{id = 3002 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %105 = "neura.data_mov"(%93) {dfg_id = 166 : i32, mapping_locs = [{id = 3016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 3016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 3016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %106 = "neura.mul"(%104, %105) {dfg_id = 250 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %107 = "neura.data_mov"(%89) {dfg_id = 102 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 2000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %108 = "neura.gep"(%107) <{operandSegmentSizes = array}> {dfg_id = 119 : i32, lhs_value = "%arg3", mapping_locs = [{id = 2 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %109 = "neura.data_mov"(%108) {dfg_id = 133 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %110 = "neura.load"(%109) {dfg_id = 150 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %111 = "neura.data_mov"(%110) {dfg_id = 164 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %112 = neura.sext %111 {dfg_id = 179 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 3 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %113 = "neura.data_mov"(%112) {dfg_id = 193 : i32, mapping_locs = [{id = 23 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %114 = "neura.gep"(%113) <{operandSegmentSizes = array}> {dfg_id = 208 : i32, lhs_value = "%arg5", mapping_locs = [{id = 11 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %115 = "neura.data_mov"(%114) {dfg_id = 221 : i32, mapping_locs = [{id = 35 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 33 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 192 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 19 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 2000 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %116 = "neura.load"(%115) {dfg_id = 231 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %117 = "neura.data_mov"(%116) {dfg_id = 240 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %118 = "neura.data_mov"(%106) {dfg_id = 259 : i32, mapping_locs = [{id = 3002 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %119 = "neura.add"(%117, %118) {dfg_id = 269 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %120 = "neura.data_mov"(%119) {dfg_id = 277 : i32, mapping_locs = [{id = 3002 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %121 = "neura.data_mov"(%114) {dfg_id = 220 : i32, mapping_locs = [{id = 36 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 232 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 22 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 3008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 3008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 3008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 3008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%120, %121) {dfg_id = 286 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %122 = "neura.data_mov"(%55) {dfg_id = 71 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 289 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 9 : i32}, {id = 289 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 10 : i32}, {id = 289 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 289 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %123 = "neura.or"(%122) {dfg_id = 86 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 2 : i32}], rhs_value = 2 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %124 = "neura.data_mov"(%123) {dfg_id = 101 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}, {id = 288 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}, {id = 288 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 288 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}, {id = 288 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %125 = "neura.gep"(%124) <{operandSegmentSizes = array}> {dfg_id = 118 : i32, lhs_value = "%arg1", mapping_locs = [{id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %126 = "neura.data_mov"(%125) {dfg_id = 132 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 15 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %127 = "neura.load"(%126) {dfg_id = 149 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %128 = "neura.data_mov"(%123) {dfg_id = 100 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %129 = "neura.gep"(%128) <{operandSegmentSizes = array}> {dfg_id = 117 : i32, lhs_value = "%arg2", mapping_locs = [{id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %130 = "neura.data_mov"(%129) {dfg_id = 131 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 8000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %131 = "neura.load"(%130) {dfg_id = 148 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %132 = "neura.data_mov"(%131) {dfg_id = 162 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %133 = neura.sext %132 {dfg_id = 178 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %134 = "neura.data_mov"(%133) {dfg_id = 192 : i32, mapping_locs = [{id = 28 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %135 = "neura.gep"(%134) <{operandSegmentSizes = array}> {dfg_id = 207 : i32, lhs_value = "%arg4", mapping_locs = [{id = 10 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %136 = "neura.data_mov"(%135) {dfg_id = 219 : i32, mapping_locs = [{id = 33 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 19 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 2000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %137 = "neura.load"(%136) {dfg_id = 230 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %138 = "neura.data_mov"(%137) {dfg_id = 239 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %139 = "neura.data_mov"(%127) {dfg_id = 163 : i32, mapping_locs = [{id = 1016 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 20 : i32}, {id = 1016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %140 = "neura.mul"(%138, %139) {dfg_id = 249 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %141 = "neura.data_mov"(%123) {dfg_id = 99 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 8000 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %142 = "neura.gep"(%141) <{operandSegmentSizes = array}> {dfg_id = 116 : i32, lhs_value = "%arg3", mapping_locs = [{id = 8 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %143 = "neura.data_mov"(%142) {dfg_id = 130 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 8008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 8008 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %144 = "neura.load"(%143) {dfg_id = 147 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %145 = "neura.data_mov"(%144) {dfg_id = 161 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %146 = neura.sext %145 {dfg_id = 177 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %147 = "neura.data_mov"(%146) {dfg_id = 191 : i32, mapping_locs = [{id = 24 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %148 = "neura.gep"(%147) <{operandSegmentSizes = array}> {dfg_id = 206 : i32, lhs_value = "%arg5", mapping_locs = [{id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %149 = "neura.data_mov"(%148) {dfg_id = 218 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8008 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 21 : i32}, {id = 8008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %150 = "neura.load"(%149) {dfg_id = 229 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %151 = "neura.data_mov"(%150) {dfg_id = 238 : i32, mapping_locs = [{id = 8008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 8008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %152 = "neura.data_mov"(%140) {dfg_id = 258 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 1 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %153 = "neura.add"(%151, %152) {dfg_id = 268 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %154 = "neura.data_mov"(%153) {dfg_id = 276 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %155 = "neura.data_mov"(%148) {dfg_id = 217 : i32, mapping_locs = [{id = 27 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 8016 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 21 : i32}, {id = 8016 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 22 : i32}, {id = 8016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}, {id = 8016 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 24 : i32}, {id = 8016 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%154, %155) {dfg_id = 285 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %156 = "neura.data_mov"(%55) {dfg_id = 70 : i32, mapping_locs = [{id = 169 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 8 : i32}, {id = 169 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 9 : i32}, {id = 169 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 10 : i32}, {id = 169 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 11 : i32}, {id = 169 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %157 = "neura.or"(%156) {dfg_id = 85 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 3 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %158 = "neura.data_mov"(%157) {dfg_id = 98 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 30 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 416 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}, {id = 416 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %159 = "neura.gep"(%158) <{operandSegmentSizes = array}> {dfg_id = 115 : i32, lhs_value = "%arg1", mapping_locs = [{id = 13 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %160 = "neura.data_mov"(%159) {dfg_id = 129 : i32, mapping_locs = [{id = 40 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 12008 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 12008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %161 = "neura.load"(%160) {dfg_id = 146 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 20 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %162 = "neura.data_mov"(%157) {dfg_id = 97 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %163 = "neura.gep"(%162) <{operandSegmentSizes = array}> {dfg_id = 114 : i32, lhs_value = "%arg2", mapping_locs = [{id = 6 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %164 = "neura.data_mov"(%163) {dfg_id = 128 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}, {id = 2000 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %165 = "neura.load"(%164) {dfg_id = 145 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %166 = "neura.data_mov"(%165) {dfg_id = 159 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %167 = neura.sext %166 {dfg_id = 176 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %168 = "neura.data_mov"(%167) {dfg_id = 190 : i32, mapping_locs = [{id = 18 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %169 = "neura.gep"(%168) <{operandSegmentSizes = array}> {dfg_id = 205 : i32, lhs_value = "%arg4", mapping_locs = [{id = 7 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 3 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %170 = "neura.data_mov"(%169) {dfg_id = 216 : i32, mapping_locs = [{id = 22 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 3008 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 3008 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %171 = "neura.load"(%170) {dfg_id = 228 : i32, mapping_locs = [{id = 3 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 3 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %172 = "neura.data_mov"(%171) {dfg_id = 237 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 7 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 200 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %173 = "neura.data_mov"(%161) {dfg_id = 160 : i32, mapping_locs = [{id = 38 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 41 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 45 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 33 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %174 = "neura.mul"(%172, %173) {dfg_id = 248 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %175 = "neura.data_mov"(%157) {dfg_id = 96 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}, {id = 192 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %176 = "neura.gep"(%175) <{operandSegmentSizes = array}> {dfg_id = 113 : i32, lhs_value = "%arg3", mapping_locs = [{id = 6 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %177 = "neura.data_mov"(%176) {dfg_id = 127 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 2000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %178 = "neura.load"(%177) {dfg_id = 144 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %179 = "neura.data_mov"(%178) {dfg_id = 158 : i32, mapping_locs = [{id = 7 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %180 = neura.sext %179 {dfg_id = 175 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %181 = "neura.data_mov"(%180) {dfg_id = 189 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %182 = "neura.gep"(%181) <{operandSegmentSizes = array}> {dfg_id = 204 : i32, lhs_value = "%arg5", mapping_locs = [{id = 6 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %183 = "neura.data_mov"(%182) {dfg_id = 215 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %184 = "neura.load"(%183) {dfg_id = 227 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %185 = "neura.data_mov"(%184) {dfg_id = 236 : i32, mapping_locs = [{id = 2008 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 2008 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 2008 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %186 = "neura.data_mov"(%174) {dfg_id = 257 : i32, mapping_locs = [{id = 19 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %187 = "neura.add"(%185, %186) {dfg_id = 267 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %188 = "neura.data_mov"(%187) {dfg_id = 275 : i32, mapping_locs = [{id = 2000 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %189 = "neura.data_mov"(%182) {dfg_id = 214 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 19 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 2009 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 2009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 2009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 2009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 2009 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%188, %189) {dfg_id = 284 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %190 = "neura.data_mov"(%55) {dfg_id = 69 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %191 = "neura.add"(%190) {dfg_id = 84 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 9 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %192 = "neura.data_mov"(%52) {dfg_id = 76 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 7 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 7 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %193 = "neura.add"(%192) {dfg_id = 91 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 8 : i32, x = 2 : i32, y = 1 : i32}], rhs_value = 4 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %194 = "neura.data_mov"(%193) {dfg_id = 109 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 160 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %195 = "neura.data_mov"(%49) {dfg_id = 111 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %196 = "neura.icmp"(%194, %195) <{cmpType = "eq"}> {dfg_id = 125 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %197 = "neura.data_mov"(%196) {dfg_id = 141 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %198 = "neura.not"(%197) {dfg_id = 157 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %199 = "neura.data_mov"(%191) {dfg_id = 95 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 20 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 321 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 11 : i32}, {id = 321 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 12 : i32}, {id = 321 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 321 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 321 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 321 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 321 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 321 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 321 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 321 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %200 = "neura.data_mov"(%198) {dfg_id = 174 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 20 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 328 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 328 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 328 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 328 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 328 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 328 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 328 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 328 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %201 = neura.grant_predicate %199, %200 {dfg_id = 188 : i32, mapping_locs = [{id = 10 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 2 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %201 -> %53 {dfg_id = 203 : i32, mapping_locs = [{id = 31 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 29 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %202 = "neura.data_mov"(%193) {dfg_id = 108 : i32, mapping_locs = [{id = 192 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 8 : i32}, {id = 192 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 192 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 192 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %203 = "neura.data_mov"(%198) {dfg_id = 173 : i32, mapping_locs = [{id = 14 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %204 = neura.grant_predicate %202, %203 {dfg_id = 187 : i32, mapping_locs = [{id = 6 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 2 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %204 -> %50 {dfg_id = 202 : i32, mapping_locs = [{id = 17 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 161 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 13 : i32}, {id = 161 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 14 : i32}, {id = 161 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 15 : i32}, {id = 161 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 16 : i32}, {id = 161 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 17 : i32}, {id = 161 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 18 : i32}, {id = 161 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 19 : i32}, {id = 161 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 20 : i32}, {id = 161 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %205 = "neura.data_mov"(%49) {dfg_id = 110 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 8 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 8 : i32}, {id = 1000 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}, {id = 1000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 1000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %206 = "neura.data_mov"(%198) {dfg_id = 172 : i32, mapping_locs = [{id = 15 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %207 = neura.grant_predicate %205, %206 {dfg_id = 186 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %207 -> %47 {dfg_id = 201 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 9 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 13 : i32}, {id = 9 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 14 : i32}, {id = 9 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 15 : i32}, {id = 9 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 16 : i32}, {id = 9 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 17 : i32}, {id = 9 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 18 : i32}, {id = 9 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 19 : i32}, {id = 9 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 20 : i32}, {id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %208 = "neura.data_mov"(%46) {dfg_id = 78 : i32, mapping_locs = [{id = 291 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 12 : i32}, {id = 291 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 13 : i32}, {id = 291 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 14 : i32}, {id = 291 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 15 : i32}, {id = 291 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 16 : i32}, {id = 291 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 291 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 291 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 291 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %209 = "neura.data_mov"(%198) {dfg_id = 171 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 296 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 12 : i32}, {id = 296 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}, {id = 296 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 14 : i32}, {id = 296 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 15 : i32}, {id = 296 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 296 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 17 : i32}, {id = 296 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 18 : i32}, {id = 296 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 19 : i32}, {id = 296 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %210 = neura.grant_predicate %208, %209 {dfg_id = 185 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %210 -> %44 {dfg_id = 200 : i32, mapping_locs = [{id = 297 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 21 : i32}, {id = 297 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 297 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 297 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 297 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 297 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %211 = "neura.data_mov"(%191) {dfg_id = 94 : i32, mapping_locs = [{id = 168 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 9 : i32}, {id = 168 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 10 : i32}, {id = 168 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %212 = "neura.data_mov"(%196) {dfg_id = 140 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %213 = neura.grant_predicate %211, %212 {dfg_id = 156 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 12 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %214 = "neura.data_mov"(%46) {dfg_id = 77 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 168 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %215 = "neura.data_mov"(%196) {dfg_id = 139 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 160 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 160 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 160 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %216 = neura.grant_predicate %214, %215 {dfg_id = 155 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %217 = "neura.data_mov"(%33) {dfg_id = 49 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %218 = "neura.data_mov"(%216) {dfg_id = 169 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %219 = "neura.phi"(%217, %218) {dfg_id = 183 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %220 = "neura.data_mov"(%30) {dfg_id = 50 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}, {id = 4000 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 4000 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %221 = "neura.data_mov"(%213) {dfg_id = 170 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %222 = "neura.phi"(%220, %221) {dfg_id = 184 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 13 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %223 = "neura.data_mov"(%25) {dfg_id = 52 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 9 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %224 = "neura.icmp"(%223) <{cmpType = "eq"}> {dfg_id = 55 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 10 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 0 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %225 = "neura.data_mov"(%224) {dfg_id = 61 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 4002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 4002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %226 = "neura.data_mov"(%224) {dfg_id = 62 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 10 : i32}, {id = 4002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 4002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 4002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 4002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 4002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 4002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 4002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}, {id = 4002 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 4002 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 4002 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 4002 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %227 = neura.grant_predicate %225, %226 {dfg_id = 68 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %228 = "neura.data_mov"(%224) {dfg_id = 60 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 10 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %229 = "neura.not"(%228) {dfg_id = 67 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 11 : i32, x = 0 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %230 = "neura.data_mov"(%222) {dfg_id = 199 : i32, mapping_locs = [{id = 11 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %231 = "neura.data_mov"(%229) {dfg_id = 82 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 11 : i32}, {id = 0 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 12 : i32}, {id = 0 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 13 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %232 = neura.grant_predicate %230, %231 {dfg_id = 213 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, resource = "tile", time_step = 14 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %233 = "neura.data_mov"(%219) {dfg_id = 198 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %234 = "neura.data_mov"(%229) {dfg_id = 81 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 4 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 12 : i32}, {id = 176 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 13 : i32}, {id = 176 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 14 : i32}, {id = 176 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %235 = neura.grant_predicate %233, %234 {dfg_id = 212 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %236 = "neura.data_mov"(%25) {dfg_id = 51 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 9 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 9 : i32}, {id = 1002 : i32, index_per_ii = 10 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 10 : i32}, {id = 1002 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 11 : i32}, {id = 1002 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 12 : i32}, {id = 1002 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 13 : i32}, {id = 1002 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 14 : i32}, {id = 1002 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 15 : i32}, {id = 1002 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 16 : i32}, {id = 1002 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %237 = "neura.data_mov"(%229) {dfg_id = 80 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 11 : i32, invalid_iterations = 0 : i32, resource = "link", time_step = 11 : i32}, {id = 1010 : i32, index_per_ii = 12 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 12 : i32}, {id = 1010 : i32, index_per_ii = 13 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 13 : i32}, {id = 1010 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 14 : i32}, {id = 1010 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 15 : i32}, {id = 1010 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 16 : i32}, {id = 1010 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %238 = neura.grant_predicate %236, %237 {dfg_id = 93 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %239 = neura.reserve {dfg_id = 7 : i32} : !neura.data +// MAPPING-NEXT: %240 = "neura.data_mov"(%238) {dfg_id = 112 : i32, mapping_locs = [{id = 1000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %241 = neura.phi_start %240, %239 {dfg_id = 126 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %242 = neura.reserve {dfg_id = 8 : i32} : !neura.data +// MAPPING-NEXT: %243 = "neura.data_mov"(%235) {dfg_id = 225 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %244 = neura.phi_start %243, %242 {dfg_id = 234 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 1 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %245 = neura.reserve {dfg_id = 9 : i32} : !neura.data +// MAPPING-NEXT: %246 = "neura.data_mov"(%232) {dfg_id = 226 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 14 : i32, invalid_iterations = 0 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 14 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %247 = neura.phi_start %246, %245 {dfg_id = 235 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 15 : i32, x = 0 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %248 = "neura.data_mov"(%247) {dfg_id = 247 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 1008 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 16 : i32}, {id = 3 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}, {id = 2000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %249 = "neura.gep"(%248) <{operandSegmentSizes = array}> {dfg_id = 256 : i32, lhs_value = "%arg1", mapping_locs = [{id = 2 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 2 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %250 = "neura.data_mov"(%249) {dfg_id = 266 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 1000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %251 = "neura.load"(%250) {dfg_id = 274 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 0 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %252 = "neura.data_mov"(%247) {dfg_id = 246 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %253 = "neura.gep"(%252) <{operandSegmentSizes = array}> {dfg_id = 255 : i32, lhs_value = "%arg2", mapping_locs = [{id = 4 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %254 = "neura.data_mov"(%253) {dfg_id = 265 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %255 = "neura.load"(%254) {dfg_id = 273 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %256 = "neura.data_mov"(%255) {dfg_id = 282 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %257 = neura.sext %256 {dfg_id = 290 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 0 : i32, y = 3 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %258 = "neura.data_mov"(%257) {dfg_id = 296 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %259 = "neura.gep"(%258) <{operandSegmentSizes = array}> {dfg_id = 302 : i32, lhs_value = "%arg4", mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %260 = "neura.data_mov"(%259) {dfg_id = 309 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 19 : i32}, {id = 12000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}, {id = 12000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %261 = "neura.load"(%260) {dfg_id = 312 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %262 = "neura.data_mov"(%261) {dfg_id = 314 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 8000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %263 = "neura.data_mov"(%251) {dfg_id = 283 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 1 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 12 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %264 = "neura.mul"(%262, %263) {dfg_id = 315 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %265 = "neura.data_mov"(%247) {dfg_id = 245 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 15 : i32}, {id = 4000 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 16 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %266 = "neura.gep"(%265) <{operandSegmentSizes = array}> {dfg_id = 254 : i32, lhs_value = "%arg3", mapping_locs = [{id = 4 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 17 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %267 = "neura.data_mov"(%266) {dfg_id = 264 : i32, mapping_locs = [{id = 4000 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}, {id = 4000 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 18 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %268 = "neura.load"(%267) {dfg_id = 272 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 19 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %269 = "neura.data_mov"(%268) {dfg_id = 281 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 8000 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %270 = neura.sext %269 {dfg_id = 289 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 0 : i32, y = 2 : i32}]} : !neura.data -> !neura.data +// MAPPING-NEXT: %271 = "neura.data_mov"(%270) {dfg_id = 295 : i32, mapping_locs = [{id = 8000 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %272 = "neura.gep"(%271) <{operandSegmentSizes = array}> {dfg_id = 301 : i32, lhs_value = "%arg5", mapping_locs = [{id = 8 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %273 = "neura.data_mov"(%272) {dfg_id = 308 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 12000 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %274 = "neura.load"(%273) {dfg_id = 311 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %275 = "neura.data_mov"(%274) {dfg_id = 313 : i32, mapping_locs = [{id = 12000 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %276 = "neura.data_mov"(%264) {dfg_id = 316 : i32, mapping_locs = [{id = 26 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %277 = "neura.add"(%275, %276) {dfg_id = 317 : i32, mapping_locs = [{id = 12 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 0 : i32, y = 3 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %278 = "neura.data_mov"(%277) {dfg_id = 318 : i32, mapping_locs = [{id = 39 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 8000 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %279 = "neura.data_mov"(%272) {dfg_id = 307 : i32, mapping_locs = [{id = 8009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 8009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}, {id = 8009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 8009 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}, {id = 8009 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 26 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: "neura.store"(%278, %279) {dfg_id = 319 : i32, mapping_locs = [{id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 27 : i32, x = 0 : i32, y = 2 : i32}]} : (!neura.data, !neura.data) -> () +// MAPPING-NEXT: %280 = "neura.data_mov"(%247) {dfg_id = 244 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 0 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 15 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %281 = "neura.add"(%280) {dfg_id = 253 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 16 : i32, x = 0 : i32, y = 0 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %282 = "neura.data_mov"(%244) {dfg_id = 243 : i32, mapping_locs = [{id = 160 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 17 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %283 = "neura.add"(%282) {dfg_id = 252 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 18 : i32, x = 1 : i32, y = 1 : i32}], rhs_value = 1 : i64} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %284 = "neura.data_mov"(%283) {dfg_id = 262 : i32, mapping_locs = [{id = 162 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 18 : i32}, {id = 162 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 162 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %285 = "neura.data_mov"(%241) {dfg_id = 143 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 168 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 20 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %286 = "neura.icmp"(%284, %285) <{cmpType = "eq"}> {dfg_id = 271 : i32, mapping_locs = [{id = 5 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 21 : i32, x = 1 : i32, y = 1 : i32}]} : (!neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %287 = "neura.data_mov"(%286) {dfg_id = 280 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %288 = "neura.not"(%287) {dfg_id = 288 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 22 : i32, x = 1 : i32, y = 2 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %289 = "neura.data_mov"(%281) {dfg_id = 263 : i32, mapping_locs = [{id = 0 : i32, index_per_ii = 1 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 16 : i32}, {id = 1003 : i32, index_per_ii = 2 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 17 : i32}, {id = 1003 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 18 : i32}, {id = 1003 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 19 : i32}, {id = 1003 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 20 : i32}, {id = 1003 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 21 : i32}, {id = 1003 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 22 : i32}, {id = 1003 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 23 : i32}, {id = 1003 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 3 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %290 = "neura.data_mov"(%288) {dfg_id = 294 : i32, mapping_locs = [{id = 288 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 0 : i32, resource = "register", time_step = 22 : i32}, {id = 29 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 23 : i32}, {id = 15 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %291 = neura.grant_predicate %289, %290 {dfg_id = 300 : i32, mapping_locs = [{id = 1 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 1 : i32, y = 0 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %291 -> %245 {dfg_id = 306 : i32, mapping_locs = [{id = 2 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 8 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 26 : i32}, {id = 8 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 27 : i32}, {id = 8 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 28 : i32}, {id = 8 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 29 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %292 = "neura.data_mov"(%283) {dfg_id = 261 : i32, mapping_locs = [{id = 16 : i32, index_per_ii = 3 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 18 : i32}, {id = 290 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 19 : i32}, {id = 290 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 20 : i32}, {id = 290 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 21 : i32}, {id = 290 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 22 : i32}, {id = 290 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 23 : i32}, {id = 290 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 2 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %293 = "neura.data_mov"(%288) {dfg_id = 293 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}, {id = 296 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 24 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %294 = neura.grant_predicate %292, %293 {dfg_id = 299 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 25 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %294 -> %242 {dfg_id = 305 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 170 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 26 : i32}, {id = 170 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 27 : i32}, {id = 170 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 28 : i32}, {id = 170 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 29 : i32}, {id = 170 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 30 : i32}, {id = 170 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 10 : i32, resource = "register", time_step = 31 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %295 = "neura.data_mov"(%241) {dfg_id = 142 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 4 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 19 : i32}, {id = 16 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 289 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 21 : i32}, {id = 289 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}, {id = 289 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %296 = "neura.data_mov"(%288) {dfg_id = 292 : i32, mapping_locs = [{id = 296 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 22 : i32}, {id = 296 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 8 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %297 = neura.grant_predicate %295, %296 {dfg_id = 298 : i32, mapping_locs = [{id = 9 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 1 : i32, y = 2 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: neura.ctrl_mov %297 -> %239 {dfg_id = 304 : i32, mapping_locs = [{id = 29 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 24 : i32}, {id = 15 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 25 : i32}, {id = 1011 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 26 : i32}, {id = 1011 : i32, index_per_ii = 12 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 27 : i32}, {id = 1011 : i32, index_per_ii = 13 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 28 : i32}, {id = 1011 : i32, index_per_ii = 14 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 29 : i32}, {id = 1011 : i32, index_per_ii = 0 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 30 : i32}, {id = 1011 : i32, index_per_ii = 1 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 31 : i32}, {id = 1011 : i32, index_per_ii = 2 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 32 : i32}, {id = 1011 : i32, index_per_ii = 3 : i32, invalid_iterations = 2 : i32, per_tile_register_id = 11 : i32, resource = "register", time_step = 33 : i32}]} : !neura.data !neura.data +// MAPPING-NEXT: %298 = "neura.data_mov"(%286) {dfg_id = 278 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %299 = "neura.data_mov"(%286) {dfg_id = 279 : i32, mapping_locs = [{id = 13 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 4001 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 22 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %300 = neura.grant_predicate %298, %299 {dfg_id = 287 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 23 : i32, x = 0 : i32, y = 1 : i32}]} : !neura.data, !neura.data -> !neura.data +// MAPPING-NEXT: %301 = "neura.data_mov"(%21) {dfg_id = 37 : i32, mapping_locs = [{id = 21 : i32, index_per_ii = 5 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 20 : i32}, {id = 17 : i32, index_per_ii = 6 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 21 : i32}, {id = 13 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, resource = "link", time_step = 22 : i32}, {id = 4001 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 1 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %302 = "neura.data_mov"(%227) {dfg_id = 83 : i32, mapping_locs = [{id = 4009 : i32, index_per_ii = 7 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 22 : i32}, {id = 4009 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %303 = "neura.data_mov"(%300) {dfg_id = 291 : i32, mapping_locs = [{id = 4016 : i32, index_per_ii = 8 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 16 : i32, resource = "register", time_step = 23 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: %304 = "neura.phi"(%301, %302, %303) {dfg_id = 297 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 24 : i32, x = 0 : i32, y = 1 : i32}]} : (!neura.data, !neura.data, !neura.data) -> !neura.data +// MAPPING-NEXT: %305 = "neura.data_mov"(%304) {dfg_id = 303 : i32, mapping_locs = [{id = 4009 : i32, index_per_ii = 9 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 24 : i32}, {id = 4009 : i32, index_per_ii = 10 : i32, invalid_iterations = 1 : i32, per_tile_register_id = 9 : i32, resource = "register", time_step = 25 : i32}]} : (!neura.data) -> !neura.data +// MAPPING-NEXT: neura.return_void %305 : !neura.data {dfg_id = 310 : i32, mapping_locs = [{id = 4 : i32, index_per_ii = 11 : i32, invalid_iterations = 1 : i32, resource = "tile", time_step = 26 : i32, x = 0 : i32, y = 1 : i32}]} +// MAPPING-NEXT: neura.yield {dfg_id = 10 : i32} +// MAPPING-NEXT: } +// MAPPING-NEXT: } + +// YAML: array_config: +// YAML-NEXT: columns: 4 +// YAML-NEXT: rows: 4 +// YAML-NEXT: compiled_ii: 15 +// YAML-NEXT: cores: +// YAML-NEXT: - column: 0 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "0" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 235 +// YAML-NEXT: time_step: 15 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ADD" +// YAML-NEXT: id: 253 +// YAML-NEXT: time_step: 16 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#1" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "arg0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 26 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ICMP_ULT" +// YAML-NEXT: id: 35 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#4" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 5 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ZEXT" +// YAML-NEXT: id: 36 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 6 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 54 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 7 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "AND" +// YAML-NEXT: id: 66 +// YAML-NEXT: time_step: 7 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "#2147483644" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - opcode: "DATA_MOV" +// YAML-NEXT: id: 2830000 +// YAML-NEXT: time_step: 22 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: + // ASM: # Compiled II: 15 // ASM: PE(0,0): -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [EAST, RED], [NORTH, RED], [$0] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: ICMP_ULT, [$0], [#4] -> [NORTH, RED], [EAST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: ZEXT, [$0] -> [$8], [$0] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: AND, [$0], [#2147483644] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$9] -> [EAST, RED] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: AND, [$8], [#3] -> [$0], [EAST, RED] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [#0] -> [NORTH, RED], [$0] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0], [EAST, RED] (t=11, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=26, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$9] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [$0] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: CONSTANT, [arg0] -> [$0] (t=0, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: ICMP_SGT, [$0], [#0] -> [$0], [EAST, RED] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [$0] -> [WEST, RED], [NORTH, RED], [$16] (t=2, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=17, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$3] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$16] -> [EAST, RED] (t=3, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$2], [$10] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$11] -> [NORTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$9] (t=5, inv_iters=0) -// ASM-NEXT: LOAD, [NORTH, RED] -> [$16] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$1] (t=6, inv_iters=0) -// ASM-NEXT: LOAD, [$0] -> [WEST, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: MUL, [EAST, RED], [$16] -> [WEST, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$2] (t=10, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$3], [NORTH, RED] -> [WEST, RED] (t=25, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$11] (t=26, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [WEST, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$10] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: OR, [$8], [#1] -> [EAST, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$9] -> [NORTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(2,0): -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [$0] -> [EAST, RED] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=2, inv_iters=0) -// ASM-NEXT: LOAD, [$0] -> [NORTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$8] -> [EAST, RED] (t=18, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=4, inv_iters=0) -// ASM-NEXT: GEP, [arg1], [$0] -> [WEST, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [NORTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [WEST, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$8] (t=22, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=22, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$8], [NORTH, RED] -> [$0] (t=25, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$9] (t=26, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [WEST, RED] -> [EAST, RED] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$8] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(3,0): -// ASM-NEXT: { -// ASM-NEXT: LOAD, [WEST, RED] -> [NORTH, RED] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [WEST, RED] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [$0] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=3, inv_iters=0) -// ASM-NEXT: GRANT_ONCE, [$0] -> [NORTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$1] -> [NORTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$1] (t=5, inv_iters=0) -// ASM-NEXT: LOAD, [$1] -> [$16] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$9] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$8] -> [WEST, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$9] -> [$2] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: MUL, [$2], [$16] -> [$2] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: ADD, [WEST, RED], [$2] -> [$2] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$2], [$8] (t=25, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=10) -// ASM: PE(0,1): -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$1] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [SOUTH, RED] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [$0] -> [$0] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [$1] -> [NORTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [NORTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: NOT, [SOUTH, RED] -> [SOUTH, RED], [$0] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=5, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [EAST, RED], [$0] -> [EAST, RED] (t=6, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=6, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$2] -> [$9] (t=22, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$1] -> [$16] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=9, inv_iters=0) -// ASM-NEXT: PHI, [$1], [$9], [$16] -> [$9] (t=24, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$2] (t=11, inv_iters=0) -// ASM-NEXT: RETURN_VOID, [$9] (t=26, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: PHI, [$0], [EAST, RED] -> [SOUTH, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [$1] -> [$0] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(1,1): -// ASM-NEXT: { -// ASM-NEXT: PHI, [SOUTH, RED], [$0] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$16] -> [$0] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$10] -> [$0] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=3, inv_iters=0) -// ASM-NEXT: ADD, [$0], [#1] -> [$2], [NORTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [WEST, RED], [SOUTH, RED] (t=5, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$2], [$8] -> [NORTH, RED], [WEST, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$1] -> [EAST, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=7, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [NORTH, RED] -> [EAST, RED], [WEST, RED], [NORTH, RED], [SOUTH, RED], [$9], [$0] (t=8, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#4] -> [EAST, RED], [$8] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=9, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: ICMP_EQ, [$0], [SOUTH, RED] -> [$0] (t=10, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [SOUTH, RED] (t=25, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: NOT, [$0] -> [EAST, RED], [SOUTH, RED], [NORTH, RED] (t=11, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [NORTH, RED] -> [$10] (t=26, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [WEST, RED] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: OR, [$9], [#3] -> [NORTH, RED], [EAST, RED] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$8] (t=13, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$16] (t=13, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$1] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [$0] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(2,1): -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [$0] -> [SOUTH, RED] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [SOUTH, RED] -> [EAST, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [SOUTH, RED] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg5], [$0] -> [$0] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [$0] -> [SOUTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [WEST, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: ADD, [WEST, RED], [#4] -> [WEST, RED], [$0] (t=8, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=9, inv_iters=0) -// ASM-NEXT: MUL, [$8], [NORTH, RED] -> [SOUTH, RED] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [WEST, RED] -> [WEST, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [NORTH, RED] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [WEST, RED] -> [SOUTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: SEXT, [SOUTH, RED] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [SOUTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg4], [WEST, RED] -> [SOUTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [WEST, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM: PE(0,2): -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [$0] -> [$8] (t=15, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [EAST, RED] (t=16, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=16, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [SOUTH, RED] -> [NORTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$8] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [$0] -> [EAST, RED] (t=19, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg4], [$0] -> [NORTH, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [$0] -> [$0] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$16] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg5], [$0] -> [NORTH, RED], [$9] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$8] -> [$8] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: MUL, [$0], [SOUTH, RED] -> [NORTH, RED] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$8], [SOUTH, RED] -> [$0] (t=25, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$16] (t=26, inv_iters=1) -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [$0] (t=26, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$9] (t=27, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(1,2): -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg3], [$1] -> [WEST, RED] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [WEST, RED] -> [EAST, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [SOUTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$2] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg5], [WEST, RED] -> [WEST, RED] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$3], [$8] -> [$9] (t=21, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: NOT, [SOUTH, RED] -> [$0], [$8] (t=22, inv_iters=1) -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [SOUTH, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=8, inv_iters=0) -// ASM-NEXT: MUL, [NORTH, RED], [EAST, RED] -> [NORTH, RED] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [$0] -> [SOUTH, RED] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=9, inv_iters=0) -// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [SOUTH, RED] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$2], [$8] -> [SOUTH, RED] (t=25, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$9] -> [$3], [SOUTH, RED] (t=12, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=12, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=12) -// ASM-NEXT: { -// ASM-NEXT: OR, [$1], [#2] -> [$0], [WEST, RED] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg2], [$0] -> [WEST, RED] (t=14, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [NORTH, RED] (t=14, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=14) -// ASM: PE(2,2): -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [SOUTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg4], [WEST, RED] -> [SOUTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [SOUTH, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$1], [$8] -> [WEST, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [WEST, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [NORTH, RED] -> [SOUTH, RED] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=10, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$1] (t=11, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=11) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=13, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=13) -// ASM: PE(3,2): -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg4], [SOUTH, RED] -> [SOUTH, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg5], [SOUTH, RED] -> [WEST, RED], [SOUTH, RED] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(0,3): -// ASM-NEXT: { -// ASM-NEXT: LOAD, [SOUTH, RED] -> [EAST, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [SOUTH, RED] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg4], [$0] -> [$0] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$8] -> [EAST, RED] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$1] (t=20, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$8] (t=20, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=5) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [SOUTH, RED] -> [EAST, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [SOUTH, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$1] -> [EAST, RED] (t=23, inv_iters=1) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=23, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=8) -// ASM-NEXT: { -// ASM-NEXT: LOAD, [$0] -> [$0] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [SOUTH, RED] -> [SOUTH, RED] (t=25, inv_iters=1) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [$0] (t=25, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=10) -// ASM-NEXT: { -// ASM-NEXT: STORE, [$0], [$8] (t=26, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=11) -// ASM: PE(1,3): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=15, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg1], [$0] -> [WEST, RED] (t=17, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: SEXT, [WEST, RED] -> [$0] (t=18, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GEP, [arg5], [$0] -> [WEST, RED] (t=19, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=4) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [EAST, RED] (t=21, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=6) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) -// ASM-NEXT: { -// ASM-NEXT: ADD, [WEST, RED], [SOUTH, RED] -> [WEST, RED] (t=24, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=9) -// ASM: PE(2,3): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=22, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$8] -> [EAST, RED], [NORTH, RED], [$0] (t=15, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [EAST, RED] (t=16, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [arg0] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$0] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: { +// ASM-NEXT: ICMP_ULT, [$0], [#4] -> [NORTH, RED], [EAST, RED] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) +// ASM-NEXT: { +// ASM-NEXT: ZEXT, [$0] -> [$8], [$0] (t=5, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=5) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [NORTH, RED] -> [$0] (t=6, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=6) +// ASM-NEXT: { +// ASM-NEXT: AND, [$0], [#2147483644] -> [$0] (t=7, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=22, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=7) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$9] -> [EAST, RED] (t=8, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=23, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=8) +// ASM-NEXT: { +// ASM-NEXT: AND, [$8], [#3] -> [$0], [EAST, RED] (t=9, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=9) +// ASM-NEXT: { +// ASM-NEXT: ICMP_EQ, [$0], [#0] -> [NORTH, RED], [$0] (t=10, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=10) +// ASM-NEXT: { +// ASM-NEXT: NOT, [$0] -> [$0], [EAST, RED] (t=11, inv_iters=0) +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$8] (t=26, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=11) +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [$9] (t=13, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=13) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [$0] (t=14, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=14) diff --git a/test/mapping_quality/branch_for.mlir b/test/mapping_quality/branch_for.mlir index 15fb70a5..ab0b6af7 100644 --- a/test/mapping_quality/branch_for.mlir +++ b/test/mapping_quality/branch_for.mlir @@ -197,389 +197,197 @@ func.func @loop_test() -> f32 { // MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { -// YAML: array_config: -// YAML-NEXT: columns: 4 -// YAML-NEXT: rows: 4 -// YAML-NEXT: compiled_ii: 5 -// YAML-NEXT: cores: -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "RETURN_VALUE" -// YAML-NEXT: id: 56 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 500001 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 0 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#10" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 16 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 43 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "6" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 54 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 45 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SLT" -// YAML-NEXT: id: 35 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 44 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 3 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "7" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 46 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 42 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 40 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "9" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_ONCE" -// YAML-NEXT: id: 2 -// YAML-NEXT: time_step: 0 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 18 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 4 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 260001 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 2 -// YAML-NEXT: core_id: "10" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 47 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 260002 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 29 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "CTRL_MOV" -// YAML-NEXT: id: 51 -// YAML-NEXT: time_step: 7 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$16" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 19 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$16" +// YAML: array_config: +// YAML-NEXT: columns: 4 +// YAML-NEXT: rows: 4 +// YAML-NEXT: compiled_ii: 5 +// YAML-NEXT: cores: +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 0 +// YAML-NEXT: core_id: "2" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "RETURN_VALUE" +// YAML-NEXT: id: 56 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 1 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "5" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "CTRL_MOV" +// YAML-NEXT: id: 500000 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_ONCE" +// YAML-NEXT: id: 0 +// YAML-NEXT: time_step: 1 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "#10" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 2 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "PHI_START" +// YAML-NEXT: id: 16 +// YAML-NEXT: time_step: 2 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 43 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "$8" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 2 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "6" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 0 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 54 +// YAML-NEXT: time_step: 5 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "SOUTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 45 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 3 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "ICMP_SLT" +// YAML-NEXT: id: 35 +// YAML-NEXT: time_step: 3 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "EAST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 44 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "WEST" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - column: 3 +// YAML-NEXT: row: 1 +// YAML-NEXT: core_id: "7" +// YAML-NEXT: entries: +// YAML-NEXT: - entry_id: "entry0" +// YAML-NEXT: instructions: +// YAML-NEXT: - index_per_ii: 1 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "GRANT_PREDICATE" +// YAML-NEXT: id: 46 +// YAML-NEXT: time_step: 6 +// YAML-NEXT: invalid_iterations: 1 +// YAML-NEXT: src_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - operand: "$0" +// YAML-NEXT: color: "RED" +// YAML-NEXT: dst_operands: +// YAML-NEXT: - operand: "NORTH" +// YAML-NEXT: color: "RED" +// YAML-NEXT: - index_per_ii: 4 +// YAML-NEXT: operations: +// YAML-NEXT: - opcode: "NOT" +// YAML-NEXT: id: 42 +// YAML-NEXT: time_step: 4 +// YAML-NEXT: invalid_iterations: 0 +// YAML-NEXT: src_operands: -// ASM: # Compiled II: 5 -// ASM: PE(2,0): -// ASM-NEXT: { -// ASM-NEXT: RETURN_VALUE, [NORTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM: PE(1,1): -// ASM-NEXT: { -// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [NORTH, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#10] -> [$0] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [EAST, RED], [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$8] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(2,1): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [EAST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [NORTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ICMP_SLT, [NORTH, RED], [WEST, RED] -> [NORTH, RED], [EAST, RED], [$0], [WEST, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(3,1): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [NORTH, RED], [$0] -> [NORTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: NOT, [WEST, RED] -> [WEST, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(1,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#1] -> [$0] (t=0, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [SOUTH, RED] -> [EAST, RED] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [EAST, RED] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(2,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$8], [$0] -> [EAST, RED] (t=5, inv_iters=1) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: ADD, [EAST, RED], [WEST, RED] -> [SOUTH, RED], [$8] (t=2, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$16] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [NORTH, RED], [$16] -> [$0], [WEST, RED] (t=3, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM-NEXT: { -// ASM-NEXT: FADD, [EAST, RED], [$0] -> [EAST, RED], [SOUTH, RED] (t=4, inv_iters=0) -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$0] (t=4, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=4) -// ASM: PE(3,2): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [$0] (t=0, inv_iters=0) -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [SOUTH, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [WEST, RED] -> [WEST, RED] (t=1, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0.000000] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: CTRL_MOV, [SOUTH, RED] -> [$8] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [$8] -> [WEST, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(2,3): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#3.000000] -> [SOUTH, RED] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) +// ASM: # Compiled II: 5 +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: RETURN_VALUE, [NORTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: CTRL_MOV, [EAST, RED] -> [NORTH, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#10] -> [$0] (t=1, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [$8] -> [EAST, RED], [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [EAST, RED] -> [$8] (t=4, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=4) diff --git a/test/neura/ctrl/branch_for.mlir b/test/neura/ctrl/branch_for.mlir index 6b031256..05db5b1c 100644 --- a/test/neura/ctrl/branch_for.mlir +++ b/test/neura/ctrl/branch_for.mlir @@ -207,7 +207,7 @@ func.func @loop_test() -> f32 { // MAPPING: func.func @loop_test() -> f32 attributes {accelerator = "neura", dataflow_mode = "predicate", mapping_info = {compiled_ii = 4 : i32, mapping_mode = "spatial-temporal", mapping_strategy = "heuristic", rec_mii = 4 : i32, res_mii = 1 : i32, x_tiles = 4 : i32, y_tiles = 4 : i32}} { -// YAML: array_config: +// YAML: array_config: // YAML-NEXT: columns: 4 // YAML-NEXT: rows: 4 // YAML-NEXT: compiled_ii: 4 @@ -231,7 +231,7 @@ func.func @loop_test() -> f32 { // YAML-NEXT: - operand: "EAST" // YAML-NEXT: color: "RED" // YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 190001 +// YAML-NEXT: id: 190000 // YAML-NEXT: time_step: 4 // YAML-NEXT: invalid_iterations: 1 // YAML-NEXT: src_operands: @@ -247,229 +247,55 @@ func.func @loop_test() -> f32 { // YAML-NEXT: time_step: 2 // YAML-NEXT: invalid_iterations: 0 // YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "#0.000000" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 8 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "1" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 23 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "PHI_START" -// YAML-NEXT: id: 7 -// YAML-NEXT: time_step: 1 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 240001 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "NORTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ADD" -// YAML-NEXT: id: 11 -// YAML-NEXT: time_step: 2 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#1" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 3 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "ICMP_SLT" -// YAML-NEXT: id: 17 -// YAML-NEXT: time_step: 3 -// YAML-NEXT: invalid_iterations: 0 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#10" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 2 -// YAML-NEXT: row: 0 -// YAML-NEXT: core_id: "2" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "NOT" -// YAML-NEXT: id: 21 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "WEST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 0 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "4" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 0 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "FADD" -// YAML-NEXT: id: 12 -// YAML-NEXT: time_step: 4 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "#3.000000" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "EAST" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 19 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - index_per_ii: 2 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "GRANT_PREDICATE" -// YAML-NEXT: id: 22 -// YAML-NEXT: time_step: 6 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "$0" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - operand: "$8" -// YAML-NEXT: color: "RED" -// YAML-NEXT: dst_operands: -// YAML-NEXT: - operand: "SOUTH" -// YAML-NEXT: color: "RED" -// YAML-NEXT: - column: 1 -// YAML-NEXT: row: 1 -// YAML-NEXT: core_id: "5" -// YAML-NEXT: entries: -// YAML-NEXT: - entry_id: "entry0" -// YAML-NEXT: instructions: -// YAML-NEXT: - index_per_ii: 1 -// YAML-NEXT: operations: -// YAML-NEXT: - opcode: "DATA_MOV" -// YAML-NEXT: id: 15 -// YAML-NEXT: time_step: 5 -// YAML-NEXT: invalid_iterations: 1 -// YAML-NEXT: src_operands: -// YAML-NEXT: - operand: "WEST" -// ASM: # Compiled II: 4 -// ASM: PE(0,0): -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED] (t=0, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=4, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: GRANT_ONCE, [#0.000000] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [$0], [NORTH, RED] -> [NORTH, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(1,0): -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=4, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [$0] (t=1, inv_iters=0) -// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: ADD, [$0], [#1] -> [$0] (t=2, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: ICMP_SLT, [$0], [#10] -> [$8], [WEST, RED], [EAST, RED] (t=3, inv_iters=0) -// ASM-NEXT: } (idx_per_ii=3) -// ASM: PE(2,0): +// ASM: # Compiled II: 4 +// ASM: PE(0,0): // ASM-NEXT: { -// ASM-NEXT: NOT, [WEST, RED] -> [WEST, RED] (t=4, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM: PE(0,1): -// ASM-NEXT: { -// ASM-NEXT: FADD, [SOUTH, RED], [#3.000000] -> [$0], [EAST, RED] (t=4, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=0) -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM: PE(1,1): -// ASM-NEXT: { -// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=1) -// ASM-NEXT: { -// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [$0] (t=6, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=2) -// ASM-NEXT: { -// ASM-NEXT: RETURN_VALUE, [$0] (t=7, inv_iters=1) -// ASM-NEXT: } (idx_per_ii=3) +// ASM-NEXT: GRANT_ONCE, [#0] -> [EAST, RED] (t=0, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=4, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: GRANT_ONCE, [#0.000000] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [$0], [NORTH, RED] -> [NORTH, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(1,0): +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [$0] (t=4, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: PHI_START, [WEST, RED], [$0] -> [$0] (t=1, inv_iters=0) +// ASM-NEXT: DATA_MOV, [EAST, RED] -> [NORTH, RED] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: ADD, [$0], [#1] -> [$0] (t=2, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: ICMP_SLT, [$0], [#10] -> [$8], [WEST, RED], [EAST, RED] (t=3, inv_iters=0) +// ASM-NEXT: } (idx_per_ii=3) +// ASM: PE(2,0): +// ASM-NEXT: { +// ASM-NEXT: NOT, [WEST, RED] -> [WEST, RED] (t=4, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM: PE(0,1): +// ASM-NEXT: { +// ASM-NEXT: FADD, [SOUTH, RED], [#3.000000] -> [$0], [EAST, RED] (t=4, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=0) +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [SOUTH, RED] -> [$8] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [$8] -> [SOUTH, RED] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM: PE(1,1): +// ASM-NEXT: { +// ASM-NEXT: DATA_MOV, [WEST, RED] -> [$0] (t=5, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=1) +// ASM-NEXT: { +// ASM-NEXT: GRANT_PREDICATE, [$0], [SOUTH, RED] -> [$0] (t=6, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=2) +// ASM-NEXT: { +// ASM-NEXT: RETURN_VALUE, [$0] (t=7, inv_iters=1) +// ASM-NEXT: } (idx_per_ii=3) + From 76182e4c57af03a58b8768ced9efe9625540138a Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Fri, 27 Mar 2026 01:23:37 +0800 Subject: [PATCH 25/26] Edit variable names --- include/NeuraDialect/Mapping/MappingState.h | 11 +++--- include/NeuraDialect/Mapping/mapping_util.h | 2 +- lib/NeuraDialect/Mapping/MappingState.cpp | 34 ++++++++----------- lib/NeuraDialect/Mapping/mapping_util.cpp | 12 +++---- .../ResourceAwareTaskOptimizationPass.cpp | 2 +- 5 files changed, 29 insertions(+), 32 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index 5fe23d22..91696212 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -3,6 +3,7 @@ #include "NeuraDialect/Architecture/Architecture.h" #include "mlir/IR/Operation.h" +#include "NeuraDialect/NeuraOps.h" #include "llvm/Support/raw_ostream.h" #include #include @@ -85,7 +86,7 @@ class MappingState { // For example, if II is 4, and we want to check (tile 2, step 5), then // it will check (tile 2, step 1), (tile 2, step 5), (tile 2, step 9), etc. bool isAvailableAcrossTime(const MappingLoc &loc, - Operation *op = nullptr) const; + neura::DataMovOp op = {}) const; // Checks if a location is available for a specific occupy status. // This implements the pipeline-aware availability checking: @@ -94,7 +95,7 @@ class MappingState { // - END_PIPE_OCCUPY: available if free or IN_PIPE_OCCUPY or START_PIPE_OCCUPY // - IN_PIPE_OCCUPY: always available (can pipeline with any status) bool isAvailableForOccupyStatus(const MappingLoc &loc, int new_occupy_status, - Operation *op = nullptr) const; + neura::DataMovOp op = {}) const; // Gets the occupy status at a specific location across time domain. // Returns -1 if the location is not occupied. @@ -105,19 +106,19 @@ class MappingState { // time step. bool isAvailableAcrossTimeInRange(BasicResource *resource, int start_time, int exclusive_end_time, - Operation *op = nullptr) const; + neura::DataMovOp op = {}) const; // Checks availability of a register's cluster write port across the relevant // time steps. Returns false if a DIFFERENT register in the same // RegisterFile is already writing at a congruent time slot. Multiple writes // to the SAME register are allowed (idempotent). - bool isRegisterWriteAvailableAcrossTime(Register *reg, int time_step) const; + bool isRegisterWriteAvailableAcrossTime(Register *reg, int start_time) const; // Checks availability of a register's cluster read port across the relevant // time steps. Returns false if a DIFFERENT register in the same // RegisterFile is already reading at a congruent time slot. Multiple reads // from the SAME register are allowed (shared read). - bool isRegisterReadAvailableAcrossTime(Register *reg, int time_step) const; + bool isRegisterReadAvailableAcrossTime(Register *reg, int exclusive_end_time) const; // Gets the operation at a specific (tile/link, time_step) location. std::optional getOpAt(MappingLoc loc) const; diff --git a/include/NeuraDialect/Mapping/mapping_util.h b/include/NeuraDialect/Mapping/mapping_util.h index 0ae06cd7..a0ef07cb 100644 --- a/include/NeuraDialect/Mapping/mapping_util.h +++ b/include/NeuraDialect/Mapping/mapping_util.h @@ -124,7 +124,7 @@ bool canReachLocInTime(const std::vector &producers, // back to the strict one-occupant-per-register rule. Register *getAvailableRegister(const MappingState &mapping_state, Tile *tile, int start_time, int exclusive_end_time, - Operation *op = nullptr); + neura::DataMovOp op = {}); // Gets the execution latency of an operation from its "latency" attribute. // Returns 1 (single-cycle) if the attribute is not present. diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index 5a25629f..45dd390a 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -150,7 +150,7 @@ void MappingState::removeReadFromRegFileRecord(Register *reg, int time_step) { } bool MappingState::isRegisterWriteAvailableAcrossTime(Register *reg, - int time_step) const { + int start_time) const { RegisterFile *reg_file = reg->getRegisterFile(); if (!reg_file) { return true; @@ -183,7 +183,7 @@ bool MappingState::isRegisterWriteAvailableAcrossTime(Register *reg, } } } else { - for (int t = time_step % II; t < II * kMaxSteps; t += II) { + for (int t = start_time % II; t < II * kMaxSteps; t += II) { if (!checkSlot(t)) { return false; } @@ -193,7 +193,7 @@ bool MappingState::isRegisterWriteAvailableAcrossTime(Register *reg, } bool MappingState::isRegisterReadAvailableAcrossTime(Register *reg, - int time_step) const { + int exclusive_end_time) const { RegisterFile *reg_file = reg->getRegisterFile(); if (!reg_file) { return true; @@ -226,7 +226,7 @@ bool MappingState::isRegisterReadAvailableAcrossTime(Register *reg, } } } else { - for (int t = time_step % II; t < II * kMaxSteps; t += II) { + for (int t = (exclusive_end_time - 1) % II; t < II * kMaxSteps; t += II) { if (!checkSlot(t)) { return false; } @@ -339,12 +339,12 @@ void MappingState::unbindOp(Operation *op) { } bool MappingState::isAvailableAcrossTime(const MappingLoc &loc, - Operation *op) const { + neura::DataMovOp op) const { // Checks whether the resource at the given (resource, time_step) is free, // considering both occupancy state and the register-cluster constraint. // Returns true if the (resource, t) slot is free (or only IN_PIPE_OCCUPY). - auto isSlotFree = [this, op](BasicResource *resource, int t) -> bool { + auto isSlotFree = [this, op](BasicResource *resource, int t) mutable -> bool { std::map>>::const_iterator it = occupied_locs.find({resource, t}); @@ -354,11 +354,9 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc, for (const std::pair &entry : it->second) { if (entry.first != IN_PIPE_OCCUPY) { if (op && entry.second) { - if (auto mov1 = dyn_cast(op)) { - if (auto mov2 = dyn_cast(entry.second)) { - if (mov1.getOperand() == mov2.getOperand()) { - continue; - } + if (auto mov2 = dyn_cast(entry.second)) { + if (op.getOperand() == mov2.getOperand()) { + continue; } } } @@ -406,10 +404,10 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc, bool MappingState::isAvailableForOccupyStatus(const MappingLoc &loc, int new_occupy_status, - Operation *op) const { + neura::DataMovOp op) const { // Helper lambda to check a single location against all existing entries auto checkSingleLoc = [this, new_occupy_status, - op](const MappingLoc &check_loc) -> bool { + op](const MappingLoc &check_loc) mutable -> bool { std::map>>::const_iterator it = occupied_locs.find(check_loc); @@ -424,11 +422,9 @@ bool MappingState::isAvailableForOccupyStatus(const MappingLoc &loc, Operation *existing_op = entry.second; if (op && existing_op) { - if (auto mov1 = dyn_cast(op)) { - if (auto mov2 = dyn_cast(existing_op)) { - if (mov1.getOperand() == mov2.getOperand()) { - continue; - } + if (auto mov2 = dyn_cast(existing_op)) { + if (op.getOperand() == mov2.getOperand()) { + continue; } } } @@ -522,7 +518,7 @@ int MappingState::getOccupyStatusAcrossTime(const MappingLoc &loc) const { bool MappingState::isAvailableAcrossTimeInRange(BasicResource *resource, int start_time, int exclusive_end_time, - Operation *op) const { + neura::DataMovOp op) const { // Checks the availability for each time step across time domain. for (int t = start_time; t < exclusive_end_time; ++t) { MappingLoc check_loc = {resource, t}; diff --git a/lib/NeuraDialect/Mapping/mapping_util.cpp b/lib/NeuraDialect/Mapping/mapping_util.cpp index 6a93d539..ae405976 100644 --- a/lib/NeuraDialect/Mapping/mapping_util.cpp +++ b/lib/NeuraDialect/Mapping/mapping_util.cpp @@ -619,7 +619,7 @@ bool mlir::neura::tryRouteBackwardMove(Operation *mov_op, MappingLoc src_loc, Register *mlir::neura::getAvailableRegister(const MappingState &state, Tile *tile, int start_time, int exclusive_end_time, - Operation *op) { + neura::DataMovOp op) { // Finds the first register that is free across the requested range AND // satisfies the single-port cluster constraints: // - Write port: at start_time, only one register per RegisterFile may be @@ -644,7 +644,7 @@ Register *mlir::neura::getAvailableRegister(const MappingState &state, continue; } // Check cluster read-port constraint at the read time step. - if (!state.isRegisterReadAvailableAcrossTime(reg, exclusive_end_time - 1)) { + if (!state.isRegisterReadAvailableAcrossTime(reg, exclusive_end_time)) { continue; } return reg; @@ -681,7 +681,7 @@ bool mlir::neura::tryRouteDataMove(Operation *mov_op, MappingLoc src_loc, // Uses register as routing resource within the same tile. // Finds an available register to store the data. Register *available_reg = getAvailableRegister( - state, src_tile, src_loc.time_step, exclusive_deadline_step, mov_op); + state, src_tile, src_loc.time_step, exclusive_deadline_step, dyn_cast_or_null(mov_op)); if (!available_reg) { llvm::outs() << "[tryRouteDataMove] Cannot find available register on Tile#" @@ -736,7 +736,7 @@ bool mlir::neura::tryRouteDataMove(Operation *mov_op, MappingLoc src_loc, // Arrives early, needs register on destination tile to wait. Register *wait_reg = getAvailableRegister(state, dst_tile, current_state.current_time, - exclusive_deadline_step, mov_op); + exclusive_deadline_step, dyn_cast_or_null(mov_op)); if (!wait_reg) { llvm::outs() << "[tryRouteDataMove] Cannot find available waiting" "register on destination Tile#" @@ -768,7 +768,7 @@ bool mlir::neura::tryRouteDataMove(Operation *mov_op, MappingLoc src_loc, MappingLoc link_loc = {out_link, current_state.current_time}; // Checks if link is available at current time step. - if (!state.isAvailableAcrossTime(link_loc, mov_op)) { + if (!state.isAvailableAcrossTime(link_loc, dyn_cast_or_null(mov_op))) { continue; } @@ -787,7 +787,7 @@ bool mlir::neura::tryRouteDataMove(Operation *mov_op, MappingLoc src_loc, // Option 2: Uses register on current tile to wait one time step. Register *wait_register = getAvailableRegister( state, current_state.current_tile, current_state.current_time, - current_state.current_time + 1, mov_op); + current_state.current_time + 1, dyn_cast_or_null(mov_op)); if (wait_register) { int next_time = current_state.current_time + 1; // Checks if this(tile, time) combination has been visited. diff --git a/lib/TaskflowDialect/Transforms/Optimizations/ResourceAwareTaskOptimizationPass.cpp b/lib/TaskflowDialect/Transforms/Optimizations/ResourceAwareTaskOptimizationPass.cpp index 53a4d9e4..4709bb56 100644 --- a/lib/TaskflowDialect/Transforms/Optimizations/ResourceAwareTaskOptimizationPass.cpp +++ b/lib/TaskflowDialect/Transforms/Optimizations/ResourceAwareTaskOptimizationPass.cpp @@ -214,7 +214,7 @@ struct TaskGraphNode { int64_t steps = kUnprofiled; int64_t ii = kUnprofiled; int cgra_count = 1; - CgraShape shape = {1, 1, true}; + CgraShape shape = {1, 1, true, {}}; // Dependency edges (both SSA and memory). SmallVector predecessors; From 85105471769c5b6b262e6db7605c30b28b666c80 Mon Sep 17 00:00:00 2001 From: Shiran Guo Date: Fri, 27 Mar 2026 08:45:00 +0800 Subject: [PATCH 26/26] Rename `op` parameter to `move_op` --- include/NeuraDialect/Mapping/MappingState.h | 13 ++++++------- include/NeuraDialect/Mapping/mapping_util.h | 6 +++--- lib/NeuraDialect/Mapping/MappingState.cpp | 20 ++++++++++---------- lib/NeuraDialect/Mapping/mapping_util.cpp | 4 ++-- 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/include/NeuraDialect/Mapping/MappingState.h b/include/NeuraDialect/Mapping/MappingState.h index 91696212..7af90f2a 100644 --- a/include/NeuraDialect/Mapping/MappingState.h +++ b/include/NeuraDialect/Mapping/MappingState.h @@ -14,11 +14,10 @@ namespace neura { // Occupy status for multi-cycle pipeline support. // These states define how a tile/FU is occupied at a given time step. -#define SINGLE_OCCUPY 0 // A single-cycle op is in the FU (exclusive) +#define SINGLE_OCCUPY 0 // A single-cycle op is in the FU (exclusive) #define START_PIPE_OCCUPY 1 // A multi-cycle op starts in the FU -#define END_PIPE_OCCUPY 2 // A multi-cycle op ends in the FU -#define IN_PIPE_OCCUPY 3 // A multi-cycle op is occupying the FU (pipelined) - +#define END_PIPE_OCCUPY 2 // A multi-cycle op ends in the FU +#define IN_PIPE_OCCUPY 3 // A multi-cycle op is occupying the FU (pipelined) // Represents a spatial-temporal location: (resource, time_step) struct MappingLoc { BasicResource *resource; @@ -86,7 +85,7 @@ class MappingState { // For example, if II is 4, and we want to check (tile 2, step 5), then // it will check (tile 2, step 1), (tile 2, step 5), (tile 2, step 9), etc. bool isAvailableAcrossTime(const MappingLoc &loc, - neura::DataMovOp op = {}) const; + neura::DataMovOp move_op = nullptr) const; // Checks if a location is available for a specific occupy status. // This implements the pipeline-aware availability checking: @@ -95,7 +94,7 @@ class MappingState { // - END_PIPE_OCCUPY: available if free or IN_PIPE_OCCUPY or START_PIPE_OCCUPY // - IN_PIPE_OCCUPY: always available (can pipeline with any status) bool isAvailableForOccupyStatus(const MappingLoc &loc, int new_occupy_status, - neura::DataMovOp op = {}) const; + neura::DataMovOp move_op = nullptr) const; // Gets the occupy status at a specific location across time domain. // Returns -1 if the location is not occupied. @@ -106,7 +105,7 @@ class MappingState { // time step. bool isAvailableAcrossTimeInRange(BasicResource *resource, int start_time, int exclusive_end_time, - neura::DataMovOp op = {}) const; + neura::DataMovOp move_op = nullptr) const; // Checks availability of a register's cluster write port across the relevant // time steps. Returns false if a DIFFERENT register in the same diff --git a/include/NeuraDialect/Mapping/mapping_util.h b/include/NeuraDialect/Mapping/mapping_util.h index a0ef07cb..7c6c2ef6 100644 --- a/include/NeuraDialect/Mapping/mapping_util.h +++ b/include/NeuraDialect/Mapping/mapping_util.h @@ -114,17 +114,17 @@ bool canReachLocInTime(const std::vector &producers, // The end_time is exclusive, meaning the register should be available // until end_time - 1. Returns nullptr if no available register found. // -// The optional `op` parameter is the DataMovOp being routed. It is forwarded +// The optional `move_op` parameter is the DataMovOp being routed. It is forwarded // to MappingState::isAvailableAcrossTime() / isAvailableForOccupyStatus() so // that multiple DataMovOps carrying the same materialized source value can -// share a single physical register. When `op` is non-null the availability +// share a single physical register. When `move_op` is non-null the availability // check recognises that two DataMovOps reading the identical value do not // actually conflict, because the single register read port broadcasts the // value to all consumers. Passing nullptr disables this sharing and falls // back to the strict one-occupant-per-register rule. Register *getAvailableRegister(const MappingState &mapping_state, Tile *tile, int start_time, int exclusive_end_time, - neura::DataMovOp op = {}); + neura::DataMovOp move_op = nullptr); // Gets the execution latency of an operation from its "latency" attribute. // Returns 1 (single-cycle) if the attribute is not present. diff --git a/lib/NeuraDialect/Mapping/MappingState.cpp b/lib/NeuraDialect/Mapping/MappingState.cpp index 45dd390a..30160786 100644 --- a/lib/NeuraDialect/Mapping/MappingState.cpp +++ b/lib/NeuraDialect/Mapping/MappingState.cpp @@ -339,12 +339,12 @@ void MappingState::unbindOp(Operation *op) { } bool MappingState::isAvailableAcrossTime(const MappingLoc &loc, - neura::DataMovOp op) const { + neura::DataMovOp move_op) const { // Checks whether the resource at the given (resource, time_step) is free, // considering both occupancy state and the register-cluster constraint. // Returns true if the (resource, t) slot is free (or only IN_PIPE_OCCUPY). - auto isSlotFree = [this, op](BasicResource *resource, int t) mutable -> bool { + auto isSlotFree = [this, move_op](BasicResource *resource, int t) mutable -> bool { std::map>>::const_iterator it = occupied_locs.find({resource, t}); @@ -353,9 +353,9 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc, } for (const std::pair &entry : it->second) { if (entry.first != IN_PIPE_OCCUPY) { - if (op && entry.second) { + if (move_op && entry.second) { if (auto mov2 = dyn_cast(entry.second)) { - if (op.getOperand() == mov2.getOperand()) { + if (move_op.getOperand() == mov2.getOperand()) { continue; } } @@ -404,10 +404,10 @@ bool MappingState::isAvailableAcrossTime(const MappingLoc &loc, bool MappingState::isAvailableForOccupyStatus(const MappingLoc &loc, int new_occupy_status, - neura::DataMovOp op) const { + neura::DataMovOp move_op) const { // Helper lambda to check a single location against all existing entries auto checkSingleLoc = [this, new_occupy_status, - op](const MappingLoc &check_loc) mutable -> bool { + move_op](const MappingLoc &check_loc) mutable -> bool { std::map>>::const_iterator it = occupied_locs.find(check_loc); @@ -421,9 +421,9 @@ bool MappingState::isAvailableForOccupyStatus(const MappingLoc &loc, int existing_status = entry.first; Operation *existing_op = entry.second; - if (op && existing_op) { + if (move_op && existing_op) { if (auto mov2 = dyn_cast(existing_op)) { - if (op.getOperand() == mov2.getOperand()) { + if (move_op.getOperand() == mov2.getOperand()) { continue; } } @@ -518,12 +518,12 @@ int MappingState::getOccupyStatusAcrossTime(const MappingLoc &loc) const { bool MappingState::isAvailableAcrossTimeInRange(BasicResource *resource, int start_time, int exclusive_end_time, - neura::DataMovOp op) const { + neura::DataMovOp move_op) const { // Checks the availability for each time step across time domain. for (int t = start_time; t < exclusive_end_time; ++t) { MappingLoc check_loc = {resource, t}; // Checks the availability across time domain. - if (!isAvailableAcrossTime(check_loc, op)) { + if (!isAvailableAcrossTime(check_loc, move_op)) { return false; } } diff --git a/lib/NeuraDialect/Mapping/mapping_util.cpp b/lib/NeuraDialect/Mapping/mapping_util.cpp index ae405976..549bf72e 100644 --- a/lib/NeuraDialect/Mapping/mapping_util.cpp +++ b/lib/NeuraDialect/Mapping/mapping_util.cpp @@ -619,7 +619,7 @@ bool mlir::neura::tryRouteBackwardMove(Operation *mov_op, MappingLoc src_loc, Register *mlir::neura::getAvailableRegister(const MappingState &state, Tile *tile, int start_time, int exclusive_end_time, - neura::DataMovOp op) { + neura::DataMovOp move_op) { // Finds the first register that is free across the requested range AND // satisfies the single-port cluster constraints: // - Write port: at start_time, only one register per RegisterFile may be @@ -636,7 +636,7 @@ Register *mlir::neura::getAvailableRegister(const MappingState &state, // the register, so the single register read port broadcasts to all consumers. for (Register *reg : tile->getRegisters()) { if (!state.isAvailableAcrossTimeInRange(reg, start_time, exclusive_end_time, - op)) { + move_op)) { continue; } // Check cluster write-port constraint at the write time step.